[#10209] Market for XML Web stuff — Matt Sergeant <matt@...>

I'm trying to get a handle on what the size of the market for AxKit would be

15 messages 2001/02/01

[#10238] RFC: RubyVM (long) — Robert Feldt <feldt@...>

Hi,

20 messages 2001/02/01
[#10364] Re: RFC: RubyVM (long) — Mathieu Bouchard <matju@...> 2001/02/05

[#10708] Suggestion for threading model — Stephen White <spwhite@...>

I've been playing around with multi-threading. I notice that there are

11 messages 2001/02/11

[#10853] Re: RubyChangeRequest #U002: new proper name for Hash#indexes, Array#indexes — "Mike Wilson" <wmwilson01@...>

10 messages 2001/02/14

[#11037] to_s and << — "Brent Rowland" <tarod@...>

list = [1, 2.3, 'four', false]

15 messages 2001/02/18

[#11094] Re: Summary: RCR #U002 - proper new name fo r indexes — Aleksi Niemel<aleksi.niemela@...>

> On Mon, 19 Feb 2001, Yukihiro Matsumoto wrote:

12 messages 2001/02/19

[#11131] Re: Summary: RCR #U002 - proper new name fo r indexes — "Conrad Schneiker" <schneik@...>

Robert Feldt wrote:

10 messages 2001/02/19

[#11251] Programming Ruby is now online — Dave Thomas <Dave@...>

36 messages 2001/02/21

[#11469] XML-RPC and KDE — schuerig@... (Michael Schuerig)

23 messages 2001/02/24
[#11490] Re: XML-RPC and KDE — schuerig@... (Michael Schuerig) 2001/02/24

Michael Neumann <neumann@s-direktnet.de> wrote:

[#11491] Negative Reviews for Ruby and Programming Ruby — Jim Freeze <jim@...> 2001/02/24

Hi all:

[#11633] RCR: shortcut for instance variable initialization — Dave Thomas <Dave@...>

13 messages 2001/02/26

[#11652] RE: RCR: shortcut for instance variable initialization — Michael Davis <mdavis@...>

I like it!

14 messages 2001/02/27

[#11700] Starting Once Again — Ron Jeffries <ronjeffries@...>

OK, I'm starting again with Ruby. I'm just assuming that I've

31 messages 2001/02/27
[#11712] RE: Starting Once Again — "Aaron Hinni" <aaron@...> 2001/02/27

> 2. So far I think running under TextPad will be better than running

[#11726] Re: Starting Once Again — Aleksi Niemel<zak@...> 2001/02/28

On Wed, 28 Feb 2001, Aaron Hinni wrote:

[ruby-talk:10309] critique this program pleaase

From: sp00fD <sp00fD@...>
Date: 2001-02-03 16:40:06 UTC
List: ruby-talk #10309
I was wondering if anyone could take a gander at this program and tell
me if they see anything obviously wrong or if they could just give me
some pointers, or let me know if it looks good...  The threading thing
is quite new for me, so I wanted to make especially sure that I wasn't
dorking that up.

Thanks in advance

--
require 'net/telnet'
require 'getoptlong'

hosts = []
threads = []
progname = File.basename $0

# Defaults
timeout = 10
prompt = /[$%#>] \z/n
verbose = false
interactive = false
outfile = "/tmp/#{progname}.out"
sleepTime = 0

opts = GetoptLong.new(
        ["--verbose", "-v", GetoptLong::NO_ARGUMENT],
        ["--timeout", "-t", GetoptLong::OPTIONAL_ARGUMENT],
        ["--prompt", "-p", GetoptLong::OPTIONAL_ARGUMENT],
        ["--interactive", "-i", GetoptLong::NO_ARGUMENT],
        ["--outfile", "-o", GetoptLong::OPTIONAL_ARGUMENT],
        ["--sleep", "-s", GetoptLong::REQUIRED_ARGUMENT]
)

def printUsage
        puts <<-USAGE

Usage: #{progname} [-v] [-t] [-p] [-i] [-s N[hm]] host1..hostn
        -v|--verbose     doesn't print login mess
        -t|--timeout     sets the timeout in seconds (connection and
su's)
        -p|--prompt      sets the prompt to look for (ie. /[$%#>] \\z/n)
        -i|--interactive gives you a prompt at each system
        -o|--outfile     name of the file to send output to
        -s|--sleep       time to sleep before execution h/hour m/min

        USAGE
end

def getUser
        print "Username: "
        STDIN.gets.chomp!
end

def getPassword
        print "Password: "
        begin
                system("stty -echo")
                passwd = STDIN.gets.chomp!
        ensure
                system("stty echo")
        end
        puts
        passwd
end

def getCommand
        puts "Commands to run (CTRL-D to end):"
        STDIN.gets("\cD").chomp!
end

opts.each do |opt, arg|
        case opt
                when "--verbose"
                        verbose = true
                when "--timeout"
                        timeout = arg.inspect.to_i
                when "--prompt"
                        prompt = arg.inspect
                when "--interactive"
                        interactive = true
                when "--outfile"
                        outfile = arg.inspect
                when "--sleep"
                        sleepTime = arg.to_i.inspect.to_i
        end
end

if !ARGV[0]
        printUsage
        exit 1
end

user = getUser
passwd = getPassword
print "Enter root password (if needed) "
rpasswd = getPassword
command = getCommand
sleep sleepTime

ARGV.each do |host|
        begin
                hosts << Net::Telnet::new({"Host"       =>      host,
                                           "Timeout"    =>      timeout,
                                           "Prompt"     =>      prompt,
                                           "Output_log" =>
outfile})
        rescue TimeoutError
                puts "#{host} timed out"
        end
end

hosts.each do |con|
        threads << Thread.new(con) do |myCon|
                myCon.login(user, passwd) { |c| print c if verbose }
                if rpasswd != ""
                        myCon.cmd({"String" => "su - root",
                                   "Match" => /[pP]assword:/,
                                   "Timeout" => timeout}) { |c| print
c }
                        myCon.cmd({"String" => rpasswd,
                                   "Match" => prompt,
                                   "Timeout" => timeout}) { |c| print c}
                end

                command.split(/\n/).each do |cmd|
                        myCon.cmd({"String" => cmd,
                                   "Match" => prompt}) { |c| print c }
                end
                myCon.close
        end
end

threads.each { |aThread| aThread.join }


Sent via Deja.com
http://www.deja.com/

In This Thread

Prev Next