expect ssh首次登录自动判断(yes/no)?

93 篇文章 30 订阅 ¥39.90 ¥99.00
v-lhb-prx01:/root/sbin# sh ./expect.sh 
spawn ssh root@192.168.32.16
The authenticity of host '192.168.32.16 (192.168.32.16)' can't be established.
RSA key fingerprint is da:3a:61:09:e4:f6:46:d7:01:08:1a:6c:b9:41:e8:4c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.32.16' (RSA) to the list of known hosts.
root@192.168.32.16's password: 
Last login: Wed May 27 09:37:32 2015 from 192.168.33.107

v-dev-redis02:/root# df -h
Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/vg00-lv_root  7.7G  5.6G  1.8G  77% /
tmpfs                     499M     0  499M   0% /dev/shm
/dev/sda1                 194M   29M  155M  16% /boot
v-dev-redis02:/root# exit
logout
Connection to 192.168.32.16 closed.



-----------------------------------------------------------------------------------

expect {
    "(yes/no)?" {
        send "yes\n"
        expect "password:"
        send "$passwd\n"
    }
        "password:" {
        send "$passwd\n"
    }
 }
# 下面测试是否登录到 
expect "#" 
send "df -h\n"
send "exit\r"
expect eof

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要将执行的命令和输出记录到文本文件中,您可以使用重定向符号 ">" 将输出重定向到文件中。以下是优化后的代码示例: ```shell #!/bin/sh ssh_check() { user="Administrator" password="Admin@9000" ip="10.160.124.66" if [ $(ping_check "$ip") = "false" ] then echo 1 exit 1 fi /usr/bin/expect <<-EOF set timeout 5 spawn bash -c "ssh $user@$ip &>/dev/null" expect { "yes/no" {set timeout -1; send "yes\r";exp_continue} "password" {send "$password\r"} } expect "Administrator@iRM:/#" send "exit\r" expect eof EOF echo $? } ping_check() { ipaddr="10.160.124.66" ping -c 1 $ipaddr >/dev/null if [ $? -eq 0 ] then echo "true" else echo "false" fi } ssh_run() { user="Administrator" password="Admin@9000" ip="10.160.124.66" node_num="$i" /usr/bin/expect <<-EOF set timeout -1 spawn ssh $user@$ip expect { "yes/no" {set timeout -1; send "yes\r";exp_continue} "password" {send "$password\r"} } expect "Administrator@iRM:/#" send "ipmcget -d ipinfo \r" expect "Administrator@iRM:/#" send "ipmcset -d serialnode -v $node_num \r" expect "Administrator@iRM:/#" send "exit\r" EOF } for (( i = 1; i < 4; i++ )); do echo "-------------------open---------------------------" echo $i node_num=$i ssh_check ssh_run echo "-------------------close---------------------------" done > 2.log ``` 这样,执行的命令和输出将被重定向到名为 `2.log` 的文本文件中。请注意,如果 `2.log` 文件已存在,它将被覆盖。如果要将输出追加到文件末尾而不是覆盖,请使用 ">>" 符号。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

scan724

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值