使用Perl我怎么能automtelogin到远程Linux主机使用SSH

目前,我有这样的陈述:系统(“ssh-o StrictHostKeyChecking =无根\ @ $ {地址} \”猫/无功/日志/消息“”); 这不需要密码,因为这两个系统是通过适当的密钥交换来设置的

现在不再可用:因此:

我希望能够:

  1. 以“admin”身份login
  2. 提供密码
  3. 做一个sudo -i
  4. 提供密码
  5. 运行相同的命令“cat / var / log / messages”

谢谢,卡马尔

在使用Perl时, 总是在CPAN中寻找一个模块来完成任务。 几乎肯定有人已经解决了你的问题。 在这种情况下: Net :: SSH :: Perl 。

您可以将“admin”用户添加到/ var / log / messages文件的组中,而不是使用sudo。 在典型的Debian / Ubuntu系统上,这意味着将“admin”用户添加到“adm”组,因为那是/ var / log / messages文件的组。

要将pipe理员用户添加到“adm”组中:

sudo adduser admin adm 

然后,只需使用没有sudo的ssh来获取文件。

另一个select是编辑你的/ etc / sudoers文件(使用visudo)来允许pipe理员用户运行那个命令而不用sudo密码。

使用Net :: OpenSSH 。

在模块发行版的示例目录中,您会发现一些脚本自动执行sudo交互。