对于用户交互的Perl脚本(perl script for user interaction)

2019-10-20 07:26发布

我是新来编程。 我写了一个perl脚本执行以下步骤。

1)SSH到远程机器

2)执行的命令的序列。

该脚本需要用户交互between.It需要用户名和密码。 我不知道如何与继续。

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:

一旦用户名输入我需要输入password.This是我做的,但没有奏效。

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");

Answer 1:

我想象用户名提示已经到达时,回应的一部分

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

所以后续的waitfor会永远等下去。

您应该使用sendwaitfor而不是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的僧人不拿出你工作的解决方案,然后通过各种手段在这里问的问题,但你浪费我们的时间,如果,我们未知的,你的问题已经有其他地方的解决方案。



Answer 2:

我想为用户名的提示已经到来的响应的一部分exec

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

所以后续的waitfor会永远等下去。

您应该使用sendwaitfor而不是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的僧人不拿出你工作的解决方案,然后通过各种手段在这里问的问题,但你浪费我们的时间,如果,我们未知的,你的问题已经有其他地方的解决方案。



文章来源: perl script for user interaction