Ruby - 使用 ssh 检查 ping 状态 featback,通过 ssh 反引号?
Ruby - checking ping status featback with ssh, backtick via ssh?
在我的项目中,我想编写一个脚本来检查我网络中的每个设备是否都是 online/reachable。我有一个叫做 pingtest 的方法,现在可以用了..
def pingtest(destination)
system("ping -n 2 #{destination}")
if $? == 0 #checking status of the backtick
puts "\n Ping was successful!"
else
close("Device is unreachable. Check the config.txt for the correct IPs.")
#close() is just print & exit..
end
end
现在我想通过 ssh 会话与我网络中的其他设备进行 ping:
#--------------------------------
require 'net/ssh'
Net::SSH.start(@ip, @user, :password => @password)
#--------------------------------
@ssh = Ssh.new(@config)
@ssh.cmd("ping -c 3 #{@IP}")
ping 工作正常,但我现在如何使用我的回溯想法来确定它是否成功?
我考虑过使用 sftp 连接..
"ping -c 3 #{@IP} => tmpfile.txt" => download => check/compare => delete
(或类似的东西)来检查它是否正确,但我对此不满意。有没有可能像我以前那样检查成功状态?
我也试过这样的东西..
result = @ssh.cmd("ping -c 3 #{@IP}")
if result.success? == 0 # and so on..
几天前我开始学习ruby,所以我是一个新手,期待您的想法来帮助我解决这个问题。
您可以使用 Net::SSH 远程 运行 命令,类似于您已经得到的命令。
从 运行 命令返回的 result
将是写入 stdout
和 stderr
的任何内容。
您可以使用该返回值的内容来检查它是否成功。
Net::SSH.start(@ip, @user. password: @password) do |ssh|
response = ssh.exec! "ping -c 3 #{@other_ip}"
if response.include? 'Destination Host Unreachable'
close("Host unreachable. Result was: #{result}")
else
puts "\n Ping was successful"
end
end
在我的项目中,我想编写一个脚本来检查我网络中的每个设备是否都是 online/reachable。我有一个叫做 pingtest 的方法,现在可以用了..
def pingtest(destination)
system("ping -n 2 #{destination}")
if $? == 0 #checking status of the backtick
puts "\n Ping was successful!"
else
close("Device is unreachable. Check the config.txt for the correct IPs.")
#close() is just print & exit..
end
end
现在我想通过 ssh 会话与我网络中的其他设备进行 ping:
#--------------------------------
require 'net/ssh'
Net::SSH.start(@ip, @user, :password => @password)
#--------------------------------
@ssh = Ssh.new(@config)
@ssh.cmd("ping -c 3 #{@IP}")
ping 工作正常,但我现在如何使用我的回溯想法来确定它是否成功?
我考虑过使用 sftp 连接..
"ping -c 3 #{@IP} => tmpfile.txt" => download => check/compare => delete
(或类似的东西)来检查它是否正确,但我对此不满意。有没有可能像我以前那样检查成功状态?
我也试过这样的东西..
result = @ssh.cmd("ping -c 3 #{@IP}")
if result.success? == 0 # and so on..
几天前我开始学习ruby,所以我是一个新手,期待您的想法来帮助我解决这个问题。
您可以使用 Net::SSH 远程 运行 命令,类似于您已经得到的命令。
从 运行 命令返回的 result
将是写入 stdout
和 stderr
的任何内容。
您可以使用该返回值的内容来检查它是否成功。
Net::SSH.start(@ip, @user. password: @password) do |ssh|
response = ssh.exec! "ping -c 3 #{@other_ip}"
if response.include? 'Destination Host Unreachable'
close("Host unreachable. Result was: #{result}")
else
puts "\n Ping was successful"
end
end