#!/usr/bin/expect // 指定shebang
set timeout 3 // 设定超时时间为3秒
spawn ssh root@192.168.200.201 // fork一个子进程执行ssh命令
expect "*password*" // 期待匹配到 'username@ipstring's password:'
send "my_password\r" // 向命令行输入密码并回车
send "sudo -s\r"
send "cd ~\r" // 帮我切换到常用的工作目录
interact // 允许用户与命令行交互
expect解释器
expect是一个能实现自动和交互式任务的解释器,它也能解释常见的shell语法命令,其特色在以下几个命令:
spawn命令:
spawn command命令会fork一个子进程去执行command命令,然后在此子进程中执行后面的命令;
在ssh自动登陆脚本中,我们使用 spawn ssh user_name@ip_str,fork一个子进程执行ssh登陆命令;
expect命令:
expect命令是expect解释器的关键命令,它的一般用法为 expect "string",即期望获取到string字符串,可在在string字符串里使用 * 等通配符;
string与命令行返回的信息匹配后,expect会立刻向下执行脚本;
set timeout命令:
set timeout n命令将expect命令的等待超时时间设置为n秒,在n秒内还没有获取到其期待的命令,expect 为false,脚本会继续向下执行;
send命令:
send命令的一般用法为 send "string",它们会我们平常输入命令一样向命令行输入一条信息,当然不要忘了在string后面添加上 \r 表示输入回车;
interact命令:
interact命令很简单,执行到此命令时,脚本fork的子进程会将操作权交给用户,允许用户与当前shell进行交互;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/140777.html