繁体   English   中英

在perl的系统函数中调用“ ssh”

[英]call “ssh” in system function in perl

我有一个问题,涉及通过SSH与Perl中的“ system()”函数进行连接。

在我的perl脚本中,我想通过ssh连接到另一个ip,运行命令并返回其值或将结果值重定向到文件。

system ("su - anotherUSer ; ssh someUsername@someIpAddress");

(我更改了用户名,以便不要求输入密码)

当我执行此仅一行时,它会正确更改用户名,但不会通过ssh连接。 换句话说,系统调用的第二部分未完成(或已完成但未反映在终端上)。

如果我向执行此脚本的服务器输入mannualy并运行这两个命令,则我可以毫无错误地运行它们。

当我运行“退出”命令注销我的anotherUser用户时,出现错误:

(ssh:“用户名”。“ ip”:节点名或服务名未知)

我还测试了转义符“ @”和“。”。

system ("su - anotherUSer ; ssh someUsername\@number\.number\.number\.number");

在这种情况下,当我运行“退出”命令时,它将询问密码(请记住,我将用户切成两半,以便可以省略密码)。

希望你能理解我的问题。

谢谢!!!

您告诉错误的Shell执行ssh

您生成一个shell并要求它执行两个命令sussh 它首先生成su ,然后启动另一个shell。 您没有告诉这个新的shell做任何事情,因此它等待输入。 当它最终退出时,第一个外壳程序执行第二个命令ssh

采用:

system("su -c 'ssh someUsername@someIpAddress' - anotherUSer");

但这太讨厌了! 为什么不只是为当前用户设置密钥,而不是成为anottherUSer使用他们的用户呢?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM