После того, как я скопирую файл с помощью 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
...