使用expect自动登录机器

该博客介绍了SSH自动登录和交互的expect脚本,包括`send`、`spawn`、`expect`等关键命令的使用,展示了如何设置密码并保持交互。此内容对于远程自动化管理服务器和执行命令的场景非常实用。
#!/usr/bin/expect
passwd='123456'
expect -c "
    set time 30
    spawn ssh root@120.55.55.110
    expect {
    \"*yes/no\" { send \"yes\r\"; exp_continue }
    \"*password:\" { send \"$passwd\r\"; exp_continue }
    }
interact
"
# expect #自动应答命令用于交互式命令的自动执行
# spawn  #expect中的监控程序,其运行会监控命令提出的交互式问题
# send   #发送问题答案给交互命令
# "\r"   #表示回车
# exp_continue #当问题不存在时继续回答下边的问题
# expect eof   #问题回答完毕退出expect环境
# interact     #问题回答完毕留在交互界面
# set NAME [ lindex $argv n]  #定义变量

### 如何在 Linux 中使用 Expect 实现自动化分发文件/命令 Expect 是一种用于自动化交互式应用程序的工具,在 Shell 脚本中非常有用。通过 Expect 可以模拟用户的输入并处理程序的输出,从而实现完全自动化的操作过程。 #### 安装 Expect 工具 为了能够在系统上使用 Expect 功能,首先需要确认已经安装了该软件包: 对于基于 Debian 的发行版(如 Ubuntu),可以执行如下命令来安装: ```bash sudo apt-get update && sudo apt-get install expect -y ``` 对于基于 RedHat 的发行版(如 CentOS 或 Fedora),则应使用 yum 来完成安装: ```bash sudo yum install expect -y ``` #### 创建简单的 Expect 脚本来传输文件 下面是一个简单例子,展示如何利用 FTP 和 Expect 结合的方式向远程服务器上传文件[^2]: ```expect #!/usr/bin/expect set timeout 30 spawn ftp 192.168.1.100 ;# 远程主机地址 expect "Name" send "username\r" ;# 用户名 expect "Password:" send "password\r" ;# 密码 expect "ftp>" send "binary\n" ;# 设置二进制模式 expect "ftp>" send "put /path/to/local/file.txt file.txt\n";# 发送本地路径至远端位置 expect "ftp>" send "bye\n" interact ``` 保存上述脚本为 `upload_file.exp` 并赋予可执行权限: ```bash chmod +x upload_file.exp ``` 之后可以直接运行此脚本来完成文件上传的任务。 #### 自动SSH 命令发送 除了 FTP 外,Expect 同样适用于其他场景下的自动化需求,比如通过 SSH 执行远程命令。这里给出一段示范代码用来登录到另一台机器并执行特定指令[^3]: ```expect #!/usr/bin/expect set ip [lindex $argv 0] set user [lindex $argv 1] set pass [lindex $argv 2] spawn ssh ${user}@${ip} expect "*assword:*" send "${pass}\r" expect "$ " send "uptime\r" expect "$ " puts "\nSystem Uptime:\n$expect_out(buffer)\n" send "exit\r" expect eof ``` 这段脚本接受三个参数——目标 IP 地址、SSH 登录用户名以及对应的密码,并会打印出对方系统的在线时间信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值