使用expect实现shell自动交互

发布时间 2023-08-02 17:32:57作者: 清哥他弟

安装expect

sudo apt install expect

要执行的脚本

#!/bin/bash
# cpao.sh

ssh-keygen -f "/home/lyq/.ssh/known_hosts" -R "192.168.1.10"
scp sd.sh ao_app.elf brdc* root@192.168.1.10:/root
ssh root@192.168.1.10

交互输入脚本

#!/usr/bin/expect
# ca.tcl

set timeout 86400;
spawn ./cpao.sh
expect {
        "yes/no*" {
                send "yes\n";
                exp_continue
        }
        "password*" {
                send "analog\n";
                exp_continue
        }
        "#*" {
                send "./sd.sh\nls -l\n"
        }
}

# 执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。
# 如果没有这一句登录完成后会退出,而不是留在远程终端上。
interact