У меня проблема со следующей командой:

echo "Pass for router:"
read -s pass

/usr/bin/expect - << EXPCT
spawn ssh 192.168.10.1 -l root 'opkg list-installed' > list-installed.txt
#echo @pass
expect -timeout 10000 "password: "
send -- "$pass\n";
expect "#"
interact
EXPCT

это возвращает:

Pass for router:
spawn ssh 192.168.10.1 -l root 'opkg list-installed' > list-installed.txt
root@192.168.10.1's password: 
ash: opkg list-installed: not found
spawn_id: spawn id exp6 not open
    while executing
"interact"

Проблема в том, что когда я использую руководство:

ssh 192.168.10.1 -l root 'opkg list-installed' > list-installed.txt

это работает без нареканий. Некоторые другие моменты:

'opkg list-installed' > list-installed.txt

Делая это таким образом, он успешно запускает команду opkg list -Installe на удаленном компьютере и сохраняет результат на локальном компьютере. это единственный способ, которым это работает. Если я вхожу по SSH, а затем пытаюсь выполнить эту команду, она не работает, или, если она работает, она сохраняется в удаленном пути.

3 ответа3

0

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

echo "Pass for router:"
read -s pass

/usr/bin/expect - << EXPCT
spawn ssh 192.168.10.1 -l root
opkg list-installed > list-installed.txt
#echo @pass
expect -timeout 10000 "password: "
send -- "$pass\n";
expect "#"
interact
EXPCT
0

Для чего-то подобного вам следует попробовать SSH Pass или использовать SSH-ключи. Это решило бы вашу проблему с ожидаемым (что похоже на молоток для такого рода вещей).

Таким образом, вы просто запускаете стандартную команду ssh:

sshpass -p $pass ssh root@192.168.10.1 'opkg list-installed' > list-installed.txt
0

Что-то, что кусает меня снова и снова: оставляя опцию -n выключенной в ssh, циклически перебирая список имен хостов на stdin

sshopts="-o StrictHostKeyChecking=no -o ConnectTimeout=5 "
sshopts+=" -n" # keep it from swallowing stdin

while read remotehostname; do
    sshpass [...] ssh ${sshopts} [...]
done < ${HOSTFILE}

[Вставьте стандартную редакционную статью о том, почему sshpass по своей сути небезопасен, если вы не запрашиваете переменную SSHPASS в интерактивном режиме, и все компетентные системные администраторы не должны шутить, пока их местные правила безопасности не разрешат доступ без пароля через ключи ssh.]

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .