gpt4 book ai didi

ruby - Sudo 通过 net::ssh 在 ruby​​ 中

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

这是我目前向远程服务器发送命令的方式:

Net::SSH.start("1.2.3.4", keys: ["~/.ssh/id_rsa.pub"]) do |ssh|
ssh.exec!(cmd_item)
end

我将如何执行需要 root 的命令,例如“sudo apt-get install”,每次都要输入密码?

最佳答案

您需要知道远程机器的根密码。如果这是已知的,其余的应该可以通过这种方式实现:

Net::SSH.start("1.2.3.4", keys: ["~/.ssh/id_rsa.pub"]) do |ssh|
if not cmd_item["sudo "].nil? # if cmd_item string requires sudo access
# sudo yourcommand => echo -e "RemoteRootPassword\n" | sudo -S yourcommand
cmd_item = "echo -e \"RemoteRootPassword\n\" | " + cmd_item.gsub(/sudo/, "sudo -S")
ssh.exec!(cmd_item)
else
ssh.exec!(cmd_item)
end
end

一些引用,你可以查看this关于如何使用带有密码作为参数的 sudo 的问题。

希望对您有所帮助:)

关于ruby - Sudo 通过 net::ssh 在 ruby​​ 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38066663/

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