Использование дочернего процесса для поддержания открытого псевдо-tty-соединения SSH в Ruby - PullRequest
1 голос
/ 13 июня 2011

Я хочу создать Ruby скрипт, который открывает псевдо-tty-соединение SSH и сохраняет его открытым.

Я также хочу отправить ему пароль, например, с помощью. expect.

Я пробовал это: (Я удалил имя сервера, пароль и имя пользователя)

#!/usr/bin/env ruby
require "pty"
require "expect"

username = 'USERNAME'
server   = 'SERVERNAME'
password = 'PASSWORD'

r_f, w_f, pid = PTY.spawn("ssh -T -l #{username} #{server}")

w_f.sync = true

r_f.expect(/.*asswor.*/, 600) do |output|
  w_f.puts password
  puts "Sending password"
end

# If we are logged on, we get a message with "Hello, username"
r_f.expect(/.*ello.*/) do
  puts "You are now logged on."
end

Однако, похоже, это закрывает соединение после получения подтверждения, что оно подключено

1 Ответ

1 голос
/ 13 июня 2011

Ваш процесс должен остаться в живых.Если ваш процесс умирает, дочерние процессы уничтожаются, а pty уничтожается.Вы можете заставить ваш процесс спать вечно:

sleep
...