Linux简单交互expect
expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。
expect需要下载才能使用;
yum -y install expect
expect自动交互流程:
spawn启动指定进程---expect获取指定关键字---send向指定程序发送指定字符---执行完成退出.
示例脚本:获取某段地址内在线ip,并收集;最后expect交互发送公钥免密;
[root@k8s-master ~]# cat get_ip_ssh.sh
#!/bin/bash
>/root/ip.txt
password=root
user=root
#判断expect包并下载
rpm -q expect &> /dev/null
if [ $? -ne 0 ] ; then
        yum -y install expect &> /dev/null
        if [ $? -ne 0 ] ; then
                echo "expect is not existent and yum failed"
        fi
fi
#判断密钥文件是否存在
if [ ! -f ~/.ssh/id_rsa ] ; then
        ssh-keygen -P "" -f ~/.ssh/id_rsa &> /dev/null
fi
#收集ip并免密
for i in {200..205}
do
        {
        ip=192.168.75.$i
        ping -c1 -W1 $ip &>/dev/null
        if [ $? -eq 0 ];then
                echo "$ip" >> /root/ip.txt
                /usr/bin/expect <<-EOF
                spawn ssh-copy-id $user@$ip
                expect {
                        "yes/no" { send "yes\r"; exp_continue }
                        "password:" { send "$password\r" }
                }
                expect eof
                EOF
        fi
        }&
done
[root@k8s-master ~]#

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号