1. expect实现参数传递
1.1 实现
$argv 参数数组
expect脚本可以接受从bash传递过来的参数。
可以使用[lindex $argv n]获得,n从0开始,分别表示第一个,第二个,第三个....参数
1.2 样例
cat telnet.exp
#!/usr/bin/expect
set host [lindex $argv 0]
set passwd [lindex $argv 1]
set passwden [lindex $argv 2]
spawn telnet $host
expect "Password:"
send "$passwd\r"
send "en\r"
send "$passwden\r"
interact
2. bash嵌套expect
2.1 我想这样使用的原因?
我在登录交换机时,需要交互式登录,需要给控制台发送命令并输出执行结果;
如果只用expect的话,脚本内含有IP,密码等敏感信息,除设置脚本权限为700外,我没有实现给expect加密;
所以间接的方法是用bash执行expect脚本,然后用shc给bash加密。
2.2 样例
vim telnet.sh
#!/bin/bash
expect telnet.exp 192.168.x.x 123123456
2.3 shc加密
shc -r -f telnet.sh
转载于:https://blog.51cto.com/supan/1771912