我正在登录远程计算机并执行命令,然后点击结果。我正在使用Expect模块。这是我的示例代码。
use Expect;
my $exp=new Expect();
$exp->spawn("ssh $hostname\r");
$exp->expect(5,"*]-> ");
$exp->send("command sent here \r");
$exp->expect(5,"*]-> ");
my $res=$exp->before(); // Here i ll get the command output in a variable. The variable contains TCPIP:1.1.1.1 in one line and UDPIP:1.2.2.2 in another line.
my $id=`grep -i TCPIP $res | cut -d ":" -f2 `;
print " The result is $id \n";
但我在这里收到错误
grep: can't open "command sent " .sh: TCPIP not found sh:UDPIP not found.
答案 0 :(得分:0)
即使没有expect
,也许你可以做到?
my $id = `ssh $hostname <your_command> | grep -i TCPIP | cut -d":" -f2`;
答案 1 :(得分:0)
grep将文件名作为参数而不是字符串。你需要这样的东西:
echo $res | grep -i TCPIP | cut -d ":" -f2 `;
确保该命令首先通过ssh手动工作。
但是考虑使用perl本身做匹配并切割而不是产生grep,那会更好。