![使用 perl 如何使用 ssh 自动登录到远程 linux 主机](https://linux22.com/image/518074/%E4%BD%BF%E7%94%A8%20perl%20%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20ssh%20%E8%87%AA%E5%8A%A8%E7%99%BB%E5%BD%95%E5%88%B0%E8%BF%9C%E7%A8%8B%20linux%20%E4%B8%BB%E6%9C%BA.png)
目前,我有如下语句:system("ssh -o StrictHostKeyChecking=no root\@${address} \"cat /var/log/messages""); 这不需要密码,因为两个系统都设置了正确的密钥交换
现在这不再可用:因此:
我希望能够:
- 以“管理员”身份登录
- 提供密码
- 执行 sudo -i
- 提供密码
- 运行相同的命令“cat /var/log/messages”
谢谢,-Kamal。
答案1
使用 Perl 时,总是寻找模块亚太网络完成任务。几乎可以肯定有人已经解决了您的问题。在这种情况下:网络::SSH::Perl。
答案2
您可能不需要使用 sudo,只需将“admin”用户添加到 /var/log/messages 文件的组即可。在典型的 Debian/Ubuntu 系统上,这意味着将“admin”用户添加到“adm”组,因为这是 /var/log/messages 文件的组。
要将管理员用户添加到“adm”组:
sudo adduser admin adm
然后,只需使用不带 sudo 的 ssh 来 cat 该文件。
另一个选择是编辑您的 /etc/sudoers 文件(使用 visudo)以允许管理员用户无需 sudo 密码即可运行该命令。
答案3
使用网络::OpenSSH。
在模块分发的示例目录中,您将找到一些自动化 sudo 交互的脚本。