使用 perl 如何使用 ssh 自动登录到远程 linux 主机

使用 perl 如何使用 ssh 自动登录到远程 linux 主机

目前,我有如下语句:system("ssh -o StrictHostKeyChecking=no root\@${address} \"cat /var/log/messages""); 这不需要密码,因为两个系统都设置了正确的密钥交换

现在这不再可用:因此:

我希望能够:

  1. 以“管理员”身份登录
  2. 提供密码
  3. 执行 sudo -i
  4. 提供密码
  5. 运行相同的命令“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 交互的脚本。

相关内容