spawn su - rootexpect "Password:"send "123456\n"
时间: 2025-02-17 11:59:30 浏览: 35
### 编写 Expect 脚本实现自动输入密码切换至 Root 用户
为了创建一个能够自动完成 `su` 命令并提供所需密码的脚本,可以采用如下所示的方法:
```bash
#!/usr/bin/expect -f
set password "your_password_here"
spawn su -
expect {
"*assword:*" {send "$password\r"; exp_continue}
}
interact
```
这段代码定义了一个简单的流程来处理从当前用户到 root 的转换过程[^1]。这里的关键部分在于设置期望接收的内容 (`*assword:*`) 和发送响应的方式 (即实际的密码加上回车键 `\r`)。
对于更复杂的场景,比如需要执行特定命令后再返回控制给操作者,则可以在适当位置加入这些指令。例如,在上述基础上增加一些额外的操作:
```bash
#!/usr/bin/expect -f
set password "your_password_here"
set command_to_run "whoami; uptime;" ;# 这里替换为你想要执行的具体命令
spawn su -
expect {
"*assword:*" {send "$password\r"}
}
send "$command_to_run\n"
expect eof
```
此版本不仅实现了身份验证自动化,还允许指定要由新会话执行的一系列命令,并最终等待所有输出完成后结束进程[^2]。
需要注意的是,出于安全考虑,直接在脚本内部硬编码敏感信息如密码并不是最佳实践;建议通过环境变量或其他更为安全的方式来传递此类数据[^3]。
阅读全文
相关推荐













