shell 脚本中ssh批量登录各个服务器并修改密码,如何把那些已经登录成功的ip和没有成功的ip分别输出到

两个文件中。谢谢了 急急急!!!!

ssh命令后 加

if [ $? -eq 0 ]
then
echo $IP >>success.ip

else
echo $IP >>failed.ip

fi追问

这个我也写了
#!/bin/bash
for ip in $(seq 200 203)
do
export addr=192.168.10.$ip
export pass=Srcb1234
expect ssh.exp $addr $pass
if [ $? -eq 0 ]; then
echo "$addr's password is right" >>rpasswd.txt
else
echo "$addr's password is wrong" 2>>wpasswd.txt
fi
done
但是他不管登录成功还是失败 返回值都是0

追答

因为你的exp最后一个命令执行成功了

追问

对对,你说的太对了, 我也认为是这样的,但我现在不知道该如何去提取那些没有登录成功和失败的ip地址,望兄台告知。谢谢啦

追答

在exp的登录命令后添加,如登录失败 exit 1.

追问

#!/usr/bin/expect
set addr [lindex $argv 0]
set pass [lindex $argv 1]
set timeout 5
spawn ssh root@$addr "echo root:123456 | chpasswd"
expect {
"(yes/no)?" { send "yes\n" }
}
expect "password:"
send "$pass\n"
expect eof
我这该如何写

追答

expect {
"yes/no" { send "yes\r";exp_continue}
"password:" {send "$pass\r"}
timeout {exit 1}

}
expect {
"Permission denied" {exit 1}
timeout {exit 1}
}

expect eof

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答