2010-07-09 7 views
0

В моей программе я использую Expect для запуска ssh. Моя программаКак использовать Expect для подключения к SSH?

$argument="[email protected]"; 
$exp->spawn("ssh $argument") or die "Cannot spawn ssh to ip $ssh_ip_address\n"; 

Но даже если он не в состоянии породить ssh он не печатает Cannot spawn ssh to ip $ssh_ip_address. Не могли бы вы помочь мне понять, почему он дает сообщение об ошибке?

+3

Эта программа даже не компилируется. 'Array найдено где оператор ожидал ... синтаксическая ошибка в ..., рядом с" root @ 10 "' Опубликуйте свой реальный код. - Пока вы ждете ответов на этот вопрос, возможно, используйте время, чтобы перейти [ваш список вопросов] (http://stackoverflow.com/users/73181/shayam) и [accept] (http://stackoverflow.com/faq # When_you_have_decided_which_answer_is_the_most_helpful_to_you, _mark_it_as_the_accepted_answer) еще несколько ответов. – daxim

+0

Я действительно dono как accpet ответы .. – Raj

+1

Я связал вас уже с [FAQ] (http://stackoverflow.com/faq): нажмите на галочку слева от ответа, чтобы она стала зеленой. Вы уже это сделали пару раз, помните? – daxim

ответ

1

Прежде всего, вы использовали двойные кавычки для своего объявления $argument, что означает, что переменные будут интерполированы в его содержимом. @10 будет оцениваться содержимым массива @10. Используйте одиночные кавычки, чтобы избежать интерполяции.

И помните, что всегда всегда включает use strict; use warnings; в верхней части каждого модуля, программы и скрипта Perl. Это избавит вас от множества скрытых ошибок и, следовательно, будет много головной боли. :)

Для чего-то еще, вам нужно будет опубликовать фактический код, который вы используете.

1

Вместо непосредственного использования Expect запустите либо Net::SSH::Expect (который завершает взаимодействие SSH с Expect), либо Net::OpenSSH (который не использует Expect и не рекомендует против него). Кроме того, всегда используйте строгие предупреждения и предупреждения.