神奇的expect

简介: 想写自动化脚本的时候,遇到需要交互的,如ssh,scp,就束手无策,直到我知道了expect。 expect 有一系列expect-send对组成,就像聊天一样。 expect A send B expect C send D 先来个例子 #!/usr/bin/expect set timeout 5 spawn ssh 192.

想写自动化脚本的时候,遇到需要交互的,如ssh,scp,就束手无策,直到我知道了expect。

expect 有一系列expect-send对组成,就像聊天一样。

expect A send B

expect C send D

先来个例子

#!/usr/bin/expect

set timeout 5

spawn ssh 192.168.2.38

expect "password" {send "slk\n"}

expect "Last login" {send " ls -l\n"}

expect eof

exit

/usr/bin/expect是指明该脚本要调用expect

set timeout 5,设置每个expect等待的时间,-1则为永不超时,在expect scp xxx xxx 的时候很好用,时间如果设太短,还没传完,expect就返回了。

spawn 创建一个进程,执行ssh 192.168.2.38命令,然后下面就是expect 和send的命令对了。

expect "password" {send "slk\n"}, 当出现“expect"的时候,发送,"slk\n",必须要加\n,就和我们平时自己输秘密最后要加个\n一样。

expect可以不止一个,所以下面可以继续expect和send。如果要执行的命令有很多,可以不写那么多expect send,直接把命令写在另一个脚本里,expect "Last login" {send " ./do.sh\n"} 就好了,expect是为交互而存在的,在不需要交互的地方调用expect是浪费自己的时间。

 

目录
相关文章
|
11月前
Error:Elements in iteration expect to have ‘v-bind:key‘ directives
Error:Elements in iteration expect to have ‘v-bind:key‘ directives
syntax error, expect {, actual [, pos 0 at
syntax error, expect {, actual [, pos 0 at
214 0
|
SQL Shell Linux
成功解决bash syntax error near unexpected token from
成功解决bash syntax error near unexpected token from
|
编译器 C语言 程序员
转载:__builtin_expect 说明
作者:大明白链接:https://www.jianshu.com/p/2684613a300f来源:简书 这个指令是gcc引入的,作用是允许程序员将最有可能执行的分支告诉编译器。这个指令的写法为:__builtin_expect(EXP, N)。
959 0
|
Shell 网络安全
shell expect简单用法
#!/usr/bin/expect -f spawn ssh-keygen -t rsa expect "*(/root/.ssh/id_rsa):" send "\r" expect "*(empty for no passphrase):" sen...
1230 0
|
Shell 网络安全 Perl
|
Shell 网络安全 Perl
|
Unix 数据安全/隐私保护
|
存储 网络安全 Shell
|
应用服务中间件