Login Shell [/bin/bash]: /bin/tcsh 可以看到该命令首先输出若干行提示信息并且提示输入用户新的登录shell。我们必须在提示信息后面输入用户的登录shell或者直接回车不修改登录shell。 2、实现自动执行 #!/usr/bin/expect# Change a login shell to tcshsetuser[lindex$argv0]spawn chsh$userexpect{"]:"{send"/...
autoexpect 生成一个名为 script.exp 的文件,其中包含与我们上面所做的相同的代码,但我们现在将保留一些附加内容。 如果你运行自动生成的文件 script.exp,你将看到与预期相同的答案: 惊人的!!那超级容易。 expect命令自动化shell脚本:许多命令会产生可变的输出,例如 FTP 程序,expect 脚本可能会失败或卡住。为了解决这...
结合Shell Script实现自动和交互式任务进行通信,而无需人的干预。 实现代码 #!/bin/bash #Author:cosann #date:2022/7/21 #description:该脚本可以实现批量登录远程主机执行命令 #检测安装expect rpm -qa | grep expect if [ $? -eq 0 ];then echo "Expect软件已安装" else echo "Expect软件未安装" yum ...
count=0 rm /tmp/iomdeskscript/changePasswd/test/expect.log for ip in `cat /tmp/iomdeskscript/changePasswd/test/devlist.txt` do expect << EOF set time 5 log_file /tmp/iomdeskscript/changePasswd/test/expect.log spawn ssh sshusr@$ip expect { "yes/no" { send "yes\r"; exp_continue ...
1. expect是spawn: 后面加上需要执行的shell命令,比如说spawn sudo touch testfile 1.3 expect:只有spawn执行的命令结果才会被expect捕捉到,因为spawn会启动一个进程,只有这个进程的相关信息才会被捕捉到,主要包括:标准输入的提示信息,Linux下账户的建立:
Login Shell [/bin/bash]: /bin/tcsh # 可以看到该命令首先输出若干行提示信息并且提示输入用户新的登录shell。我们必须在提示信息后面输入用户的登录shell或者直接回车不修改登录shell。 2、实现自动执行 [plain]view plaincopyprint? #!/usr/bin/expect
[root@qfedu script]# vim expect01.sh #!/usr/bin/expect set user root set pass 1 set ip [ lindex $argv 0 ] #expect固定写法,从0开始,第一个位置参数,相当于shell中的$1 set timeout 10 spawn ssh $user@$ip expect { "yes/no" { send "yes\r"; exp_continue } ...
shell脚本: [root@LOCALHOST sh]# cat ssh-copy-id.sh #!/bin/bash # 截取第2列以DH开头的行,并输出第二列 hosts=`awk '$2~/^DH/{print $2}' /etc/hosts` for host in $hosts;do ./ssh-copy-id.exp $host # 调用expect脚本 done
4.2 通过shell调用expect执行多条命令 注意首行内容, 这种情况下可通过sh script.sh、bash script.sh或./script.sh, 都可以执行这类脚本: 注:简单插入一下重定向的基本用法: 命令符号格式 作用 命令< 文件 将指定文件作为命令的输入设备 命令<< 分界符 表示从标准输入设备(键盘)中读入,直到遇到分界符才停止(读...
[root@qfedu script]# vim expect01.sh #!/usr/bin/expect set user root set pass 1 set ip [ lindex $argv 0 ] #expect固定写法,从0开始,第一个位置参数,相当于shell中的$1 set timeout 10 spawn ssh $user@$ip expect { "yes/no" { send "yes\r"; exp_continue } ...