как использовать команду spawn в TCL - PullRequest
0 голосов
/ 27 сентября 2010

Я использую следующий код

#!/usr/bin/expect -f
#!usr/bin/expect
#package require Expect


puts "Hello world"


spawn ssh xyz@172.31.112.182
expect -nocase "password:"
send "abc123\r"

puts "done"

во время выполнения, он выдает ошибку

Hello world
invalid command name "spawn"
    while executing
"spawn ssh xyz@172.31.112.182"
    (file "temp.tcl" line 9)

что не так в моем коде

Ответы [ 4 ]

2 голосов
/ 20 сентября 2013

удалить '#', прежде чем пакет требует Expect.

1 голос
/ 27 сентября 2010

Проблема, с которой вы столкнулись, заключается в том, что, пока он работает в Tcl (я распознаю этот формат трассировки), пакет Expect (который предоставляет команду spawn) по какой-то причине отсутствует.Первое, что нужно сделать, это сделать требование для пакета Expect явным, раскомментировав эту строку package require.Этого может быть достаточно, чтобы решить проблему самостоятельно, но в противном случае она будет жаловаться на то, что пакет недоступен.Если он недоступен, это означает, что он либо просто не установлен, либо не найден.Первое ... очевидно исправить.:-) Последнее решается путем помещения строки, подобной этой, перед этим package require:

lappend auto_path /full/path/to/Expect/package/installation

Обратите внимание, что если вы запускаете скрипт с программой ожидайте вместо tclsh программа, которая package require будет сделана для вас автоматически.Вы, очевидно, не делаете этого ...

0 голосов
/ 27 декабря 2012

Вы установили Expect на свой компьютер?

Пожалуйста, запустите следующую команду на вашем ПК, чтобы проверить, доступен ли Expect.

$, которые ожидают

/ USR / бен / ожидать

0 голосов
/ 27 сентября 2010

Попробуйте запустить интерпретатор tcl (! / Usr / bin / tcl) и импортировать Expect.

...