gpt4 book ai didi

linux - 在 perl 的系统函数中调用 "ssh"

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:57:18 25 4
gpt4 key购买 nike

我有一个关于通过 perl 中的“system()”函数通过 ssh 连接的问题。

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

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

(我更改了我的用户名,这样我就不会被要求输入密码)

当我只执行这一行时,它会正确更改用户名,但不会通过 ssh 连接。换句话说,系统调用的第二部分没有完成(或者已经完成但没有反射(reflect)在终端上)。

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

当我运行“exit”命令注销我的另一个用户时出现错误:

(ssh: "username"."ip": 节点名称或服务名称未知)

我还测试了它转义“@”和“.”

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

在这种情况下,当我运行“退出”命令时,它会要求输入密码(请记住,我切换了用户以便可以省略密码)。

我希望你能理解我的问题。

谢谢!!!

最佳答案

您告诉错误的 shell 执行 ssh

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

使用:

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

但这很讨厌!为什么不为当前用户设置一个 key ,而不是成为 anotherUSer 来使用他们的 key ?

关于linux - 在 perl 的系统函数中调用 "ssh",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31925720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com