Назад | Перейти на главную страницу

Ожидайте сценариев: есть ли способ по умолчанию вернуться к предыдущему spawn_id?

После того, как я скопирую файл с помощью spawn, spawn_id, exp8, закрывается. получает eof. Итак, при выполнении любых других команд, которые я выполняю после этого, я получаю следующее сообщение: не найден канал с именем "exp8". Итак, я предполагаю, что при возникновении спауна скрипт по умолчанию использует последнее возрождение, независимо от того, существует оно еще или нет.

Есть ли способ вернуться к exp7 по умолчанию? Или мне нужно указать на использование exp7 для КАЖДОЙ команды отправки и ожидания?

Причина, по которой я спрашиваю об этом, заключается в том, что я не могу заставить scp работать с помощью команды send. Кажется, что работает только команда spawn scp. Версия для отправки, кажется, просто зависает и на самом деле не отправляет команду. У меня нет проблем с использованием send для отправки команд ssh на другие серверы, но с scp это просто не работает. Поэтому я должен использовать spawn. Но я получаю эту проблему, пытаясь продвинуть программу. Цель программы - войти на сервер, скопировать файлы с исходного сервера на зарегистрированный сервер, затем с зарегистрированного сервера, войти на другие удаленные серверы, доступные только через этот «сервер доступа», и выполнить команды установки.

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

Есть ли способ вернуться к exp7 по умолчанию?

Как описание spawn в ожидать (1) страница руководства говорит:

Когда процесс запускается spawn, переменная spawn_id устанавливается в дескриптор, относящийся к этому процессу. Процесс, описанный spawn_id считается текущим процессом. spawn_id можно прочитать или письменный, что фактически обеспечивает контроль работы.

Так:

spawn ssh ...
# Save $spawn_id for later use
set ssh_spawn_id $spawn_id

spawn scp ...
# If a password is expected...
#expect assword:
#send "$pass\r"
# Either way, wait for SCP to finish
expect eof

# Now switch back to SSH
set spawn_id $ssh_spawn_id
...