0
이 문제를 해결할 수있는 여러 가지 방법이 있습니다. 환경에 따라 다를 수 있습니다. Ruby에서 원격 서버로 텔넷하기 위해 스크립트를 만들고, 로그인하고, 셸 유형 (로그인 후 프롬프트와 앞에 "프롬프트"가 없음)을 입력 한 후 다음 프롬프트에서 사용자 ID를 입력하십시오. 현재는 사용자를 통해 로그인하고 통과하지만 용어 부분에서는 멈 춥니 다. 정규식, 문자열, 잠자기를 사용하려고 시도한 다음 ("xterm"하지만이 프롬프트를 지나칠 수있는 것은 아무것도 없습니다.) 여기에 끊어지고 출력이 이어지는 코드 스 니펫이 있습니다.Ruby Net :: Telnet waitfor() does not work
$telnet = Net::Telnet::new("Host" => 'hostname',
"Output_log" => 'output.txt',
"Dump_log" => 'Dump.txt',
"Binmode" => false,
"Timeout" => false,
"Prompt" => /.* $ $/) { |c| print c }
$telnet.login("user", "pass") { |c| print c }
$telnet.waitfor("TERM = (xterm) ")
$telnet.puts("xterm") { |c| print c }
$telnet.waitfor(Match => /Enter\s*$/) { |c| print c }
$telnet.puts("userid")
출력은 다음과 같다 :.
HP-UX ds107492 B.11.11 U 9000/800 (tm)
login: user
Password:
Please wait...checking for disk quotas
. i
.[ci
.*s1^i
See /etc/copyright for copyright notices
You have mail.
'You have mail.'
TERM = (xterm)
Ruby'ssh' gem을보고 싶을 수도 있습니다. 잘 작동하고, 일시 정지와 지연을 포함하여 소켓 입/출력을 처리하는 방법을 읽고 싶다면 소스 코드가 짧고 멋집니다. – joelparkerhenderson
나는 ssh 또는 net :: ssh-telnet에 대해 생각하고 있었지만 우리의 환경에서는 telnet을 "보안"기능으로 사용해야만한다. –
업데이트로 net-ssh-telnet을 시도했으나 끊어졌다. 동일한 영역에서 perl Net :: Telnet과 동일합니다. 나는 초와 이야기했다. "보안"프로토콜을 보장하기 위해 내가해야 할 일이 무엇인지 말해 줬어. 나는 지금도 ssh를 사용할 수있다. :) –