Linux自动SSH SCP脚本

注意:本脚本适用于无符号命令脚本,带符号的不建议使用,转义比较复杂,如需要使用,建议编辑脚本批量scp拷贝到目标设备后再使用批量ssh执行脚本。(一台设备测试后再批量执行,一定要注意!!!!)

  • 本地创建list文件,格式如下

127.0.0.1 passwd
127.0.0.2 passwd


  • 默认为ssh登录设备执行命令,修改shell变量即可
  • 需要使用scp功能,将spawn ssh注释添加#
  • 去除#spawn scp 前的#,修改源目即可。
#!/bin/sh
cp /dev/null failed.log
cp /dev/null success.log
total=$(cat list | wc -l)
shell='uname -r'
curr=0
while read ip password
do
    curr=$(($curr + 1))
    echo "=====================================[$total,$curr]Begin to process $ip ...."
    if [ "$ip" != "" ]; then
        ping -c 1 $ip > /dev/null
        ret=$?
        if [ $ret -eq 1 ]; then
            printf "%03d: %s\r\n" $iCount "ping $ip Failed!"
            echo $ip >> failed.log
        else
            expect -c "set timeout 20
             set passwderror 0
             #spawn scp $ip:/root/1.sh /root/2.sh
             spawn ssh -o ConnectTimeout=3 root@$ip \"$shell\"
             expect {
                 \"*assword:*\" {
                     if { \$passwderror == 1 } {
                     puts \"passwd is error\"
                     exit 2
                     }
                     set timeout 1000
                     set passwderror 1
                     send \"$password\r\"
                     exp_continue
                 }
                 \"*es/no)?*\" {
                     send \"yes\r\"
                     exp_continue
                 }
                 timeout {
                     puts \"connect is timeout\"
                     exit 3
                 }
             }"
            if [ $? -ne 0 ]; then
                echo $ip >> failed.log
            else
                echo $ip >> success.log
            fi
        fi
    fi
done < list

你可能感兴趣的:(Linux)