最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Shell自動(dòng)化配置SSH免密登錄和取消SSH免密配置腳本

 更新時(shí)間:2022年07月28日 10:46:50   作者:Cosann  
本文主要介紹了Shell自動(dòng)化配置SSH免密登錄和取消SSH免密配置腳本,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1. 前文

搭建了一套有多臺(tái)主機(jī)的局域網(wǎng)環(huán)境,不完全考慮安全性的情況下,為方便管理局域網(wǎng)內(nèi)主機(jī),配置SSH免密登錄,因主機(jī)較多,前陣子針對(duì)配置ssh免密和取消ssh免密功能單獨(dú)寫了腳本來自動(dòng)化批量部署,現(xiàn)把兩個(gè)功能封裝在一起做成交互式程序

2.實(shí)現(xiàn)代碼

#!/bin/bash
#Author:cosann
#Version:0.2
#date:2022/7/27
#description:批量部署SSH免密登錄腳本

E_ERROR=65

#傳參檢測(cè)
if [ $# -ne 1 ]
then 
    echo -e "Usage:$0 ip_list_file "
    exit E_ERROR
fi

#文件檢測(cè)
if [ ! -f "$1" ]
then
    echo -e "IP_List_File $1文件異常,請(qǐng)檢查內(nèi)容"
    exit E_ERROR
fi 

#初始化
ip_list_file=$1
#從文本讀取值初始化變量
ip_address=(`awk '{print $1}' $ip_list_file`)
username=(`awk '{print $2}' $ip_list_file`)
password=(`awk '{print $3}' $ip_list_file`)

#安裝軟件檢測(cè)及部署環(huán)境配置
echo -e "》》》開始檢測(cè)依賴的必須組件是否安裝》》》\n"
if [ `rpm -qa | grep "expect" &> /dev/null;echo $?` -ne 0 ]
then
    echo -e "未安裝必須組件Expect,開始執(zhí)行安裝,請(qǐng)稍等..."
    ( yum install -y expect &> /dev/null && echo -e ">Expect安裝完成!" ) || ( echo -e "部署必須組件Expect失敗,請(qǐng)檢查Yum配置" && exit E_ERROR )
elif [ `rpm -qa | grep "openssl" &> /dev/null;echo $?` -ne 0 ]
then
    ( yum install -y openssh &> /dev/null && echo -e ">Openssh安裝完成!" ) || ( echo -e "部署必須組件Openssh失敗,請(qǐng)檢查Yum配置" && exit E_ERROR )
elif [ `rpm -qa | grep "openssh-clients" &> /dev/null;echo $?` -ne 0 ]
then
    ( yum install -y openssh-clients &> /dev/null && echo -e ">Openssh-clients安裝完成!" ) || ( echo -e "部署必須組件Openssh-clients失敗,請(qǐng)檢查Yum配置" && exit E_ERROR )
else
    echo -e ">必須組件Expect已安裝"
    echo -e ">必須組件Openssh已安裝"
    echo -e ">必須組件Openssh-clients已安裝"
fi


#打印菜單
echo -e "\n===============================================" 
echo -e "該腳本可以實(shí)現(xiàn)批量部署和刪除SSH免密配置"   
echo -e "Author:Cosann"
echo -e "Create time:2022/07/27"
echo -e "===============================================" 
    while :
    do
    echo -e ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" 
    echo -e "1. 配置SHH免密登錄"
    echo -e "2. 取消SHH免密配置"
    echo -e "3. 退出程序"
    
    #功能控制及實(shí)現(xiàn)
    read -p "請(qǐng)輸入序號(hào)>>> " nu
    if [[ "$nu" == "3" ]]
    then
        #退出程序
        echo -e "\n###!!!感謝使用,再見!!!###"

        exit 0
    elif [[ "$nu" == "1" ]]
    then    
        echo "開始推送"
        #檢測(cè)公鑰文件是否存在,不存在則生成
        if [ ! -e "$HOME/.ssh/id_rsa.pub" ];then
            ssh-keygen -t rsa -P '' -f $HOME/.ssh/id_rsa
        else
            echo -e "》》》已創(chuàng)建公鑰文件,開始向遠(yuǎn)端服務(wù)器推送公鑰》》》"
        fi

        #循環(huán)控制
        count=`grep -v '^$' $ip_list_file | wc -l `
        for (( i=0;i<$count;i++ ))
        do
            #echo -e "${ip_address[$i]}\t${username[$i]}\t${password[$i]}"
            #自動(dòng)化交互實(shí)現(xiàn)推送ssh公鑰
            /usr/bin/expect<<-EOF
            spawn ssh-copy-id -i $HOME/.ssh/id_rsa.pub ${username[$i]}@${ip_address[$i]}
            expect {
            "*yes/no"    { send "yes\r";exp_continue }
            "*password"  { send "${password[$i]}\r" }
        }
        expect eof
EOF
        done
        echo -e "--------------------------------------------------------------------------------------"
        echo -e "--------------------------------------------------------------------------------------"
        echo -e "--------------------------------------------------------------------------------------"
        echo -e "###推送完成,嘗試免密登錄###"
        #推送公鑰成功免密結(jié)果通知
        for (( i=0;i<$count;i++ ))
        do
            /usr/bin/expect<<-EOF
            spawn ssh ${username[$i]}@${ip_address[$i]}
            expect "*]#"
            send "echo "##登錄成功##"\r"
            expect "*]#"
            send "exit\r"
EOF
        done
        echo -e "-------------------------------------------"
        echo -e "已完成SHH免密配置,請(qǐng)嘗試SHH登錄遠(yuǎn)端主機(jī)確認(rèn)"

    elif [[ "$nu" == "2" ]]
    then
        #自動(dòng)化交互實(shí)現(xiàn)刪除配置免密的遠(yuǎn)程主機(jī)上的authorized_keys
        count=`grep -v '^$' $ip_list_file | wc -l `
        for (( i=0;i<$count;i++ ))
        do
        /usr/bin/expect<<-EOF
        spawn ssh ${username[$i]}@${ip_address[$i]}
        expect "*]#"    
        send "rm -f /root/.ssh/authorized_keys 2> /dev/null\r"
        expect "*]#"
        send "exit\r"
EOF
        done 
        echo -e "-------------------------------------------"
        echo -e "已取消SHH免密配置,請(qǐng)嘗試SHH登錄遠(yuǎn)端主機(jī)確認(rèn)"

    else
        echo -e "\033[41;37m 非法輸入,請(qǐng)檢查輸入!!! \033[0m"
    fi
done

3. 使用方法

3.1 使用前準(zhǔn)備將代碼復(fù)制到腳本文件,賦予執(zhí)行權(quán)限提前準(zhǔn)備好IP地址用戶密碼文件

3.2 IP地址用戶密碼文件格式(注意!!!)

3.3 運(yùn)行腳本

#腳本名 IP地址用戶密碼文件
#舉例
./ssh.sh host.txt	#腳本會(huì)判斷調(diào)用腳本是否有指定IP地址用戶密碼文件,沒有的情況下會(huì)運(yùn)行腳本失敗并提示

4. 使用注意

4.1 IP地址用戶密碼文件格式請(qǐng)按照以上圖示標(biāo)準(zhǔn)填寫,內(nèi)容不正確時(shí)會(huì)出現(xiàn)等待ssh登錄或者重試的結(jié)果,這時(shí)候需要檢查配置文件的用戶名或者密碼是否錯(cuò)誤

4.2 未在配置ssh免密的情況使用腳本,需要多次ctrl+c強(qiáng)制退出腳本

到此這篇關(guān)于Shell自動(dòng)化配置SSH免密登錄和取消SSH免密配置腳本 的文章就介紹到這了,更多相關(guān)Shell SSH免密登錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • shell腳本打印國際象棋棋盤

    shell腳本打印國際象棋棋盤

    這篇文章主要為大家詳細(xì)介紹了shell腳本打印國際象棋棋盤,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Linux?screen命令使用示例

    Linux?screen命令使用示例

    Screen是一個(gè)全屏窗口管理器,它在多個(gè)進(jìn)程(通常是交互式shell)之間多路傳輸物理終端。每個(gè)虛擬終端提供DEC?VT100終端的功能,以及ANSI?X3的幾個(gè)控制功能,本文給大家分享Linux?screen命令使用示例,感興趣的朋友一起看看吧
    2023-03-03
  • linux中scp命令和scp命令用法大全

    linux中scp命令和scp命令用法大全

    scp是linux中功能最強(qiáng)大的文件傳輸命令,可以實(shí)現(xiàn)從本地到遠(yuǎn)程以及遠(yuǎn)程到本地的輕松文件傳輸操作,本文給大家分享linux中scp命令和scp命令用法大全,需要的朋友可以參考下
    2015-09-09
  • Shell腳本解壓rpm軟件包

    Shell腳本解壓rpm軟件包

    這篇文章主要介紹了Shell腳本解壓rpm軟件包,用來解壓后提取某個(gè)包中文件,需要的朋友可以參考下
    2014-06-06
  • 使用Bash Shell對(duì)目錄中的文件實(shí)現(xiàn)遞歸式拷貝

    使用Bash Shell對(duì)目錄中的文件實(shí)現(xiàn)遞歸式拷貝

    這篇文章主要介紹了使用Bash Shell對(duì)目錄中的文件實(shí)現(xiàn)遞歸式拷貝,適用于Ubuntu等Debian系的Linux系統(tǒng),需要的朋友可以參考下
    2015-07-07
  • Linux文件操作命令詳解與實(shí)戰(zhàn)

    Linux文件操作命令詳解與實(shí)戰(zhàn)

    Linux 是一個(gè)文件為核心的操作系統(tǒng),文件的操作貫穿了系統(tǒng)管理和開發(fā)的方方面面,從創(chuàng)建、修改、查找文件到權(quán)限管理和壓縮操作,Linux 提供了豐富的命令支持,本文將深入解析 Linux 文件操作的常用命令,幫助讀者全面掌握其用法及應(yīng)用場(chǎng)景,需要的朋友可以參考下
    2024-12-12
  • Shell獲取字符串長度的多種方法總結(jié)

    Shell獲取字符串長度的多種方法總結(jié)

    這篇文章主要給大家總結(jié)分享了關(guān)于Shell獲取字符串長度的多種方法,包括了利用${#str}、利用awk的length方法、利用awk的NF項(xiàng)、利用wc的-L參數(shù)、利用expr的length方法以及利用expr的$str : ".*"技巧來實(shí)現(xiàn)方法示例,需要的朋友可以參考下。
    2017-08-08
  • 寫一個(gè)shell腳本實(shí)現(xiàn)視頻處理

    寫一個(gè)shell腳本實(shí)現(xiàn)視頻處理

    Linux和Unix都擁有很多能夠處理圖像和視頻文件的應(yīng)用程序和工具,下面這篇文章主要給大家介紹了關(guān)于如何寫一個(gè)shell腳本來實(shí)現(xiàn)視頻處理的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Shell腳本搭建FTP服務(wù)器(vsftpd)

    Shell腳本搭建FTP服務(wù)器(vsftpd)

    這篇文章主要介紹了Shell腳本搭建FTP服務(wù)器,本文直接給出腳本代碼,代碼中含有詳細(xì)注釋,需要的朋友可以參考下
    2015-03-03
  • Shell腳本之無限循環(huán)的兩種方法

    Shell腳本之無限循環(huán)的兩種方法

    這篇文章主要介紹了Shell腳本之無限循環(huán)的兩種方法,本文直接給出代碼實(shí)例,需要的朋友可以參考下
    2015-03-03

最新評(píng)論

尼玛县| 荔浦县| 博罗县| 新邵县| 成都市| 湘阴县| 章丘市| 资源县| 恩平市| 株洲市| 永州市| 大渡口区| 苍溪县| 赞皇县| 喀什市| 石泉县| 宣威市| 措美县| 田阳县| 汤阴县| 阜阳市| 潼关县| 梅州市| 北京市| 田东县| 鹤岗市| 温宿县| 定边县| 建德市| 右玉县| 新和县| 淅川县| 武功县| 土默特右旗| 工布江达县| 昂仁县| 忻州市| 钟山县| 星座| 桃江县| 姚安县|