首页 > 代码库 > Linux shell (ssh批量配置免秘)读取配置文件,进行远程操作

Linux shell (ssh批量配置免秘)读取配置文件,进行远程操作

需要目标机器安装有 expect 命令

分成五个文件config.ini(配置文件)、id_ras.pub(公钥)、read.sh(一个函数,用于读取配置文件)、test.sh(执行文件)、run.sh(远程运行脚本) 是一个配置文件.

步骤1:读取配置文件 ip,user,pwd

步骤2:将id_rsa.pub、run.sh scp到远程机器上

步骤3:远程运行脚本

read.sh

#!/bin/bashGetKey(){    section=$(echo $1 |cut -d . -f 1)    key=$(echo $1 |cut -d . -f 2)    if [ "$section"x = "ip"x ];then        nub=`cat config.ini | grep -n "$key={" |awk -F ":" {print $1}`        nue=`cat config.ini | grep -n "}" |awk -F ":" {print $1}`        nub=`expr $nub +1`        for i in $nue        do            if [ $i -gt $nub ]; then                a=$i                break            fi        done        nue=`expr $a -1`        sed -n "$nub,$nue p" config |sed s/,//g    else        sed -n "/\[$section\]/,/\[.*\]/{             /^\[.*\]/d             /^[ \t]*$/d             /^$/d             /^#.*$/d             s/^[ \t]*$key[ \t]*=[ \t]*\(.*\)[ \t]*/\1/p            }" config.ini    } 

run.sh

#!/bin/bashCreate(){    /usr/bin/expect -c"    set timeout 30    spawn ssh-keygen -t rsa    expect \":\"    send \"\r\"    expect \":\"    send \"\r\"    expect \":\"    send \"\r\"    expect eof    exit    "}if [ ! -d .ssh ];then    Create    if [ $? != 0 ];then        echo "step for create failed"        exit 0    else        cat id_rsa.pub >> .ssh/authorized_keys        if [ $? != 0 ];then            echo "step for cp failed"            exit 0        fi    fielse    cat id_rsa.pub >> .ssh/authorized_keys    if [ $? != 0 ];then        echo "step for cp failed"        exit 0    fifi

test.sh

#!/bin/bash. ./read.ship=$(GetKey "ip.ip")passwd=$(GetKey "pass.passwd")user=$(GetKey "user.usr")for i in $ipdo/usr/bin/expect -c"set timeout10spawn /usr/bin/scp -r run.sh $user@$iexpect \"password:\" {send \"$passwd\r\"}spawn /usr/bin/scp -r id_rsa.pub $user@$iexpect \"password:\" {send \"$passwd\r\"}expect eofexit"/usr/bin/expect << EOFset timeout 10spawn ssh user@$iexpect "password:"send "$passwd\r"expect "]"send "sh run.sh\r"send "exit\r"expect eofEOFdone

配置文件

[ip]ip={12.23.31.114,21.34.54.112}[user]usr=hehehe[pass]passwd=wohehehda

 

Linux shell (ssh批量配置免秘)读取配置文件,进行远程操作