我試圖解決以下問題:連接到使用Netcat的指定的IP地址和端口號。在「輸入密碼:」提示時輸入密碼。然後遠程機器回顯2行文本(1隨機)。我的任務是在超時之前將這些消息發送回主機並終止。連接到主機和重放輸出
好像我應該能夠用一個簡單的腳本,它的命令行(本地)讀取和將數據發回這些線路到遠程機器做到這一點。我試着用perl腳本,看起來像:
#!/bin/perl -w;
use strict;
use warnings;
my $PASSWORD = "password";
my $timeout = 20;
my $timenow = time;
while (time - $timenow < $timeout) {
while (my $input = <STDIN>) {
if ($input =~ "password") {
print $PASSWORD . "\n";
} else {
print $input;
}
}
}
然後運行:
nc <address> <port> | ./perlscript.pl
這得到儘可能印刷出來的密碼到我的終端,但隨後失敗。後周圍的一些戳看來,密碼是不實際被髮送到遠程機器做:
echo "PASSWORD" | nc <address> <port> | ./perlscript.pl
讓我過去密碼提示,打印出的遠程計算機發送的消息,卻又似乎他們實際上沒有被送回。
沒有人有任何想法如何,我可以實現這個目標?看來,使用某種mknode管的事情可能與I/O重放回遠程計算機的幫助,但不知道該怎麼做?
這也有可能,這種做法基本上是錯誤的,所以開到如何解決這個任何其他建議?
感謝,
馬特
感謝您的鏈接。我同意用Netcat重定向stdin/stdout是一種痛苦!最後,我用Python中的telnetlib去做我需要做的事情,但考慮到我的問題在Perl中,因此你的答案與Perl相關,我接受你的解決方案,因爲它與我所接近的爲最後。謝謝。 – Choc13 2013-03-05 11:32:21