shell expect脚本

一、安装

sudo apt-get install expect

脚本示例一

#!/usr/bin/expect

# 设置远程主机的信息
set remote_host "ip"
set remote_user "user"
set remote_password "password"
set command_to_run "command"

# 执行 SSH 登录
spawn ssh $remote_user@$remote_host

# 匹配远程主机首次连接的提示,接受并保存到 known_hosts
expect {
    "yes/no" {
        send "yes\r"
        exp_continue
    }
    eof
}

# 匹配登录提示,发送密码
expect "password:"
send "$remote_password\r"

# 匹配命令提示符,发送要执行的命令
expect "$ "
send "$command_to_run\r"

# 等待命令执行完成
expect "$ "
# 可以在这里处理命令的输出,如打印到终端或保存到文件

# 退出 SSH 会话
send "exit\r"

# 等待退出完成
expect eof


示例二:脚本和expect 结合

#!/bin/bash
set -e

ip1="10.42.0.21"
hosts1=user@${ip1}
ssh-keygen -f "/home/hq/.ssh/known_hosts" -R ${ip1}
sshpass -p 'password' ssh-copy-id  -o StrictHostKeyChecking=no $hosts1


expect -c "
spawn ssh $hosts2
send \"mv app app_bak\r\"
expect eof
"

示例三

当有多条命令,如果用send叠加,有时候会执行失败,最好采用shell命令拼接多条命令

expect -c "
spawn ssh $hosts2
send \"mv /home/mazu/app/bin/adb_app /home/mazu/app/bin/adb_app_bak || \
cp rule.json rule.json_bak\r\"
expect eof
"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值