ожидать мусора, прежде чем подсказать - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь подключиться к маршрутизатору, используя s sh, чтобы автоматически извлечь из него некоторые журналы.

Я разработал следующий код:

#!/usr/bin/expect -f

spawn ssh root@192.168.1.1
expect "Are you sure you want to"
send -- "yes\r"
expect "password"
send -- "root\r"
expect "\#"
send -- "ls\r"
expect "\#"

проблема в том, что я ожидал мусора перед приглашением в выходном журнале.

spawn ssh root@192.168.1.1
The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.
RSA key fingerprint is SHA256:6aeE74qXMeQzg0SGJBZMIa0HFQ5HJrNqE5f3XZ6Irds.
Are you sure you want to continue connecting (yes/no)? yes
Failed to add the host to the list of known hosts (/home/amin/.ssh/known_hosts).

root@192.168.1.1's password: 


BusyBox v1.30.1 () built-in shell (ash)


OpenWrt Version: ALPHA
OpenWrt base: 19.07
------------------------------------
]0;root@openwrt: ~root@openwrt:~# ls
[0;0mnetwork[m
]0;root@openwrt: ~root@openwrt:~# 

в чем основная причина этой проблемы? Как я могу это исправить?

1 Ответ

1 голос
/ 30 марта 2020

Проблема в том, что выдаются управляющие последовательности терминала, , вероятно, для управления тем, какой цвет использует терминал. Самым простым решением является установка типа терминала (переменной среды), который не поддерживает цвет перед выполнением spawn. Возможно, это поможет:

set env(TERM) "dumb"

Если это не сработает (это зависит от того, что именно у кого-то .bashrc), то вы можете просто переопределить переменную окружения PS1 на удаленной стороне своей первой командой после входа в систему.

# etc for logging in
expect "# "
send "PS1='# '\r"
expect "# "
# Everything should be right from here on
...