免密码,免输入很常用的功能,比如ssh, sudo,和一些标准输出交互,进程间交互等
1 2 3 4 5 6 |
#!/usr/bin/expect set timeout 1200 spawn sudo mkdir ss expect "*Password*" { send "123\r" } interact |
- timeout: 默认10秒
- spawn: 会启动一个进程,做到进程间可以交互
- expect: 接受标准输入的内容(比如:sudo mkdir shengshui,会显示Password:),去匹配输入的内容,其中*是匹配,区分大小写
- send: 输入要的内容(如密码)
- interact: 允许用户交互
下面例子创建一个有密码的压缩文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#!/usr/bin/expect set myMacPasswd "888" set zipPasswd "123" spawn sudo zip -r -q -e -o name.zip sa expect { "Password" { send "$myMacPasswd\n" expect { "*Enter password*" { send "$zipPasswd\n" expect { "Verify password" { send "$zipPasswd\n" } } } } } } |
⚠️注意:
如果还要输入密码,可能问题如下:
1.脚本没有执行权限 (可执行 chmod a+x test.sh)
2.使用 ./test.sh 执行 或者 /home/path/test.sh
感谢要仔细学习