expect学习

自动登录远程机器,执行相关命令。

expect_exec.sh

#!/usr/bin/expect -f

log_file expect_exec.log

set timeout 5
set ip [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]
set cmd_str [lindex $argv 3]


spawn ssh $user@$ip
expect {
"(yes/no)" { send "yes\r"; exp_continue}
"Permission denied" { send_user "error:${expect_out(buffer)}\n"; exit 1}
"assword:" { send "${password}\r"; exp_continue}
"${user}" {send "${cmd_str} \r";send "exit \r";exp_continue }
timeout { send_user "timeout $user@$ip\n"; exit 1 }
"logout" { exit}
}

exit 0

使用示例:

#!/bin/sh
IP_INFO=(
#ip|username|passwd
   "192.168.80.128|cq|cq"
   "192.168.80.128|cq|cq"
)

CMD_STR="touch aa.txt; echo 'haha' >>aa.txt;"

for ip_info in ${IP_INFO[@]};
do
    echo $ip_info
    ip=$( echo $ip_info | awk -F "|" '{print $1}')
    user=$( echo $ip_info | awk -F "|" '{print $2}')
    password=$( echo $ip_info | awk -F "|" '{print $3}')
    ./expect_exec.sh $ip $user $password "$CMD_STR"
done



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值