Как сделать удаленное выполнение в стандартном Perl 5.10.0 - PullRequest
0 голосов
/ 31 марта 2011

Я хочу выполнить некоторые команды через удаленную программу.Я пробовал это, используя следующий код.

my $promt = '/bash\$ $/';    
use Net::Telnet ();

$conn = new Net::Telnet (Timeout => 10, Prompt => $promt);
$conn->open($host);
$conn->login($username, $passwd);
@lines = $conn->cmd("who");
print @lines;

Но это выдает ошибку, Не могу найти Net / Telnet.pm в @INC .....

Есть ли способсделать эту задачу без изменений, добавив стандартные модули perl 5.10.0?

Ответы [ 2 ]

2 голосов
/ 31 марта 2011

Просто установите Perl-модуль Net :: Telnet по своему собственному пути пользователя.ИЛИ, если вы не связаны с Perl, я могу предложить лучший способ запуска команд на удаленных системах: SSH.

$ssh user@ip 'command'

Это даст вам результаты в STDOUT.

Примеры:

root@www:~ # ssh root@www 'who'
brock pts/0 Oct 21 10:31 (75.72.194.149)
jim pts/1 Oct 25 06:25 (128.101.163.128)

Еще несколько можно найти в " Запуск удаленной команды с SSH ".

0 голосов
/ 06 апреля 2011

Я решил проблему с помощью этой функции ...

# Get the needed values from the database
sub Execute_Remote_Command($) {
    print "sshpass -p $password ssh $user\@$host '$_[0]'\n";
    print `sshpass -p $password ssh $user\@$host '$_[0]'`;
    print `exit`;
}

Функция -Execute_Remote_Command- нужен параметр, который необходимо запустить на удаленном компьютере.

Требуется только дополнительное требованиездесь поддерживается команда sshpass, и ее можно скачать, используя следующий URL.http://linux.softpedia.com/get/Security/Sshpass-8693.shtml

...