linux.ssh脚本自动登录

在Linux环境中为了实现某些功能,需要手工输入相关的参数,进行人机交互,如远程登录等。Expect是一个免费的编程工具语言,能实现自动执行人机交互

下面给出一个实现SSH自动远程登录的例子

代码:

       #/usr/bin/expect
        
        set hostname [lindex $argv 0]
        set passwd   [lindex $argv 1]

        spawn ssh $hostname

        expect {
                    "*password:*" { send "passwd\r" }
                    "*es/no)?" {send "yes\r"     exp_continue }
                } 

        interact   

1)#/usr/bin/expect

       指定用来执行该脚本的命令程序

2)set hostname [lindex $argv 0]

  获得脚本的执行参数保存在数组$argv中,从0号开始是参数,并将其保存到变量hostname中。

3) spawn ssh $hostname

  spawn在expect中用于启动一个新线程,用来传递交互指令。本程序就是去执行ssh $hostname 命令;

4)expect 和 send

  expect和send命令用来实现交互过程。expect 判断标准输出,从输出的信息中查询你想要匹配的字符串如“*password:*”,存在则执行后面的名利,否则忽略。exp_continue功能相当于C语言中的continue。send执行交互操作,与手工输入等效。

5)interact 

       执行完成后保持交互状态,把控制权交给控制台,留在远程登录的终端上,如果没有这一句登录完成后会退出。 





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值