[英]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并要求它执行两个命令su
和ssh
。 它首先生成su
,然后启动另一个shell。 您没有告诉这个新的shell做任何事情,因此它等待输入。 当它最终退出时,第一个外壳程序执行第二个命令ssh
。
采用:
system("su -c 'ssh someUsername@someIpAddress' - anotherUSer");
但这太讨厌了! 为什么不只是为当前用户设置密钥,而不是成为anottherUSer
使用他们的用户呢?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.