Кажется, что вы хотите получить информацию только из списка файлов в runlist'е. Вы можете:
grep <info> -- $(cat runlist)
Попробуйте проинструктировать бродягу заставить выделение TTY.
$ vagrant ssh -- -ttt ...
Я нашел это как комментарий к этому запросу ServerFault Q & A под названием: Интерактивные команды с брунтным SSH. Backspace не стирает символ .
Это не работает, потому что showkey
просто открывает первое тестируемое им специальное устройство (из жесткого списка), которое оказывается терминал. Вот список, который он использует (цитируется из версии 1.15 ):
static char *conspath[] = {
"/proc/self/fd/0",
"/dev/tty",
"/dev/tty0",
"/dev/vc/0",
"/dev/systty",
"/dev/console",
NULL
};
Когда вы подключаетесь через ssh, первые два являются псевдотерминалами, не проходите последующий тест, который пытается определить, действительно ли они виртуальные. консоли. Но первый - это терминал, связанный с вашей оболочкой. Открывая другой терминал, вы получаете неожиданное эхо и т. Д.
Когда вы запускаете showkey -s
, он изменяет режим ввода-вывода терминала, используя файловый дескриптор, который он получает при открытии устройства ( который, кстати, 3 отличается от стандартного ввода 0 ). Это эквивалентно тому, что терминал
stty -icanon -echo -isig
showkey
изменяет терминал ( 3 ), который вы (вероятно) не вводите, и отображает результат на вашем терминале. Исходный стандартный ввод для showkey
все еще использует исходный режим ввода; обновленный режим ввода применяется к другому терминалу.
Такое поведение не является ошибкой в showkey
, поскольку оно может получать коды сканирования только с виртуальной консоли. Если вы не собираетесь вводить tty0
, вы не получите ожидаемого результата. Он мог бы быть лучше, если бы более четко сказал вам, что вы не получите полезных результатов.