Net::SSH: 你必须有一个 TTY 才能 运行 sudo
Net::SSH: You must have a TTY to run sudo
我在使用 Ruby 通过 SSH 连接执行 sudo 命令时遇到问题:运行:
require 'net/ssh'
Net::SSH.start("myserver.com", "login", :password => "pass") do |ssh|
test = ssh.exec! 'sudo -iu admin /folder/script.sh'
puts test
我接下来看到的结果:"sudo: sorry, you must have a tty to run sudo\n"
但是当我运行这个命令时:
sudo -iu admin /folder/script.sh
在 PUTTY 中使用密码 'pass' 连接到服务器 'myserver.com'。在这种情况下,sudo 命令 运行s 成功并完成。
如何使用 TTY 在 Ruby 脚本中 运行 这个 sudo 命令?
这对我有用:
require 'net/ssh'
host = "your.host.com"
user = "user"
password = "your pass"
command = "ls"
Net::SSH.start(host, user, password) do |session|
session.open_channel do |channel|
channel.on_data do |ch, data|
puts "data received: #{data}"
end
channel.request_pty do |ch, success|
if success
puts "pty successfully obtained"
ch.exec(command)
else
puts "could not obtain pty"
end
end
end
session.loop
end
require 'net/ssh'
cmd = 'sudo -iu admin /folder/script.sh'
Net::SSH.start("myserver.com", "login", "pass") do |ssh|
ssh.open_channel do |channel|
channel.request_pty
channel.exec(cmd);
end
end
奇怪的事情。当我 运行 这段代码是完整的,没有错误,但实际上没有成功。 PUTTY 和 Ruby 中的结果不同
我在使用 Ruby 通过 SSH 连接执行 sudo 命令时遇到问题:运行:
require 'net/ssh'
Net::SSH.start("myserver.com", "login", :password => "pass") do |ssh|
test = ssh.exec! 'sudo -iu admin /folder/script.sh'
puts test
我接下来看到的结果:"sudo: sorry, you must have a tty to run sudo\n"
但是当我运行这个命令时:
sudo -iu admin /folder/script.sh
在 PUTTY 中使用密码 'pass' 连接到服务器 'myserver.com'。在这种情况下,sudo 命令 运行s 成功并完成。
如何使用 TTY 在 Ruby 脚本中 运行 这个 sudo 命令?
这对我有用:
require 'net/ssh'
host = "your.host.com"
user = "user"
password = "your pass"
command = "ls"
Net::SSH.start(host, user, password) do |session|
session.open_channel do |channel|
channel.on_data do |ch, data|
puts "data received: #{data}"
end
channel.request_pty do |ch, success|
if success
puts "pty successfully obtained"
ch.exec(command)
else
puts "could not obtain pty"
end
end
end
session.loop
end
require 'net/ssh'
cmd = 'sudo -iu admin /folder/script.sh'
Net::SSH.start("myserver.com", "login", "pass") do |ssh|
ssh.open_channel do |channel|
channel.request_pty
channel.exec(cmd);
end
end
奇怪的事情。当我 运行 这段代码是完整的,没有错误,但实际上没有成功。 PUTTY 和 Ruby 中的结果不同