用于用户交互的perl脚本

时间:2014-06-18 21:42:14

标签: regex perl perl-module cpan

我是编程新手。我写了一个perl脚本,它执行以下操作。

1)ssh到远程机器

2)执行一系列命令。

脚本需要用户之间的交互。它需要用户名和密码。我不知道如何处理。

use Net::SSH::Expect;
use strict; 
use warnings;

#login to a remote host
my $ssh = Net::SSH::Expect->new (host => "ipaddr",
                             password=> 'pwd',
                             user => 'username',
                             raw_pty => 1);


my $login_output = $ssh->login();

登录成功。现在,对于下面的scp命令,我被提示输入该系统的用户名和密码。脚本在这里停止。

my $cpscp = $ssh->exec("copy scp install ip addr  filename");



Enter usename for remote scp server:

Enter the password for the remote server:

输入用户名后,我需要输入密码。这就是我所做的但是没有用。

my $usr = $ssh->waitfor ("Enter usename for remote scp server:\s*\z ", 5);
if ($usr) 
{
print("string found \n");
my $pwd =$ssh->send("root");
} 
else 
{
print("No string found\n");
}

脚本无法识别它。 “找不到字符串”

我也试过以下

$ssh->waitfor('Enter username for remote scp server:\s*\z ', 5) or die "not found";
$ssh->send("root");

2 个答案:

答案 0 :(得分:0)

我想用户名的提示已经作为对

的回复的一部分到达了
my $cpscp = $ssh->exec("copy scp install ip addr  filename");

所以随后的waitfor将永远等待。

您应该send使用waitfor代替exec,就像这样

$ssh->exec('copy scp install <ip-addr> <remote-dir> <remote-filename>');
my $found = $ssh->waitfor ('Enter usename for remote scp server:\s*\z', 5);

另请注意,您在waitfor中使用的字符串可能不正确

"Enter usename for remote scp server:\s*\z "

当你可能需要usename时,你有username,并且你已经在字符串的末尾添加了一个空格,这是不可能的,因为\z标记了输入的结束并且那里结束后显然没什么。

将同一个问题同时发布到两个网站也是不礼貌的。如果Perl Monks没有为您提供工作解决方案那么一定要在这里提出问题,但如果我们不知道您的问题已经解决了,那么您就是在浪费我们的时间别处。

答案 1 :(得分:0)

我认为用户名的提示已经作为对exec

的回复的一部分而到达
my $cpscp = $ssh->exec("copy scp install ip addr  filename");

所以随后的waitfor将永远等待。

您应该send使用waitfor代替exec,就像这样

$ssh->exec('copy scp install <ip-addr> <remote-dir> <remote-filename>');
my $found = $ssh->waitfor ('Enter usename for remote scp server:\s*\z', 5);

另请注意,您在waitfor中使用的字符串可能不正确

"Enter usename for remote scp server:\s*\z "

当你可能需要usename时,你有username,并且你已经在字符串的末尾添加了一个空格,这是不可能的,因为\z标记了输入的结束并且那里结束后显然没什么。

将同一个问题同时发布到两个网站也是不礼貌的。如果Perl Monks没有为您提供工作解决方案那么一定要在这里提出问题,但如果我们不知道您的问题已经解决了,那么您就是在浪费我们的时间别处。