From: ivan.pavlov@... Date: 2005-12-31T20:02:53+09:00 Subject: net/ssh question Those are my very first steps in Ruby. I wrote a small ruby program which sends messages to client desktops in the same local network. Basically, I ssh to each machine and execute a call to zenity to bring up a GTK dialog with a custom message. Everything works fine, which was unexpected by itself :-). The important piece of code here is: Net::SSH.start( host,'root',rootpwd ) do |session| session.open_channel do |channel| channel.on_success do #some unimportant things here channel.send_data "zenity --title 'IMPORTANT' --info --text '#{msg}' &\n" channel.close end channel.send_request "shell", nil, true end session.loop end Now, to the question. By default some zenity options allow user input which is directly sent to stdout. E.g. (directly copied from man page) - zenity --title "Select Host" --entry --text "Select the host you would like to flood-ping" How can I capture the user input in this case? I tried unsuccessfully to find something in the net/ssh documentation but I am lost in the rdoc. And one more question. As you noticed I run zenity in the background. This is because if the user does not respod to the message (clicks OL, etc...) zenity (and the ruby scirpt) just hangs and waits. Can I set a timeout from within Ruby and close the channel after the timeout expires? Of course I can always do it in bash: expect -c "set timeout 30; eval spawn -noecho zenity .... ; expect but I would really prefer to do it from Ruby. In this way I can distinguish a real timeout from a user action which did not result in anything sent to stdout. Thanks in advance.