小编Sys*_*RJR的帖子

如何在Ruby中使用net-ssh sudo su

我试图弄清楚如何sudo su - #{su_user}在Ruby 之后发送多个net-ssh命令的发送链.

我当前的代码在下面,并挂起sudo su命令,即使在之后send_data "#{password}\n".

同时,在系统上,手动执行sudo su - admin2不需要输入密码.

任何帮助,将不胜感激!


require 'rubygems'  
require 'net/ssh'
host = 'hostA'

user = 'admin'
password = 'hostA_pwd'
su_user = 'Admin2'

Net::SSH.start(host, user, :password => password) do |ssh|

     ssh.open_channel do |channel|  
       channel.request_pty do |c, success|
         raise "could not request pty" unless success

         channel.exec "pwd; whoami; sudo su - #{su_user} ; pwd ; whoami"
         channel.on_data do |c_, data|
           if data =~ /\[sudo\]/ || data =~ …
Run Code Online (Sandbox Code Playgroud)

ruby sudo su net-ssh

6
推荐指数
1
解决办法
3879
查看次数

在ruby中'raise'语句之后如何使脚本继续运行?

我正在检查日志文件中是否有任何错误消息.如果在日志文件中找到错误消息,那么我使用'raise'语句来报告创建.然而,ruby在执行'raise'语句后停止运行,即使我使用'rescue'.我希望脚本在'raise'语句后继续检查下一个日志文件是否有错误,但不确定如何.任何帮助,将不胜感激!

        logs_all = s.sudo "egrep -i '#{error_message}' #{log_file}"
        logs_all.each do |hostname, logs|
           unless logs.empty?
            puts line, "Unhappy logs on #{hostname}", line, logs
            happy = false
           end

           begin

            raise "Unhappy logs found! in #{log_file}" unless happy

           rescue raise => error
            puts error.message
           end


        end
Run Code Online (Sandbox Code Playgroud)

ruby

1
推荐指数
1
解决办法
4150
查看次数

标签 统计

ruby ×2

net-ssh ×1

su ×1

sudo ×1