Ловушка не работает

Хотя пользователи, безусловно, могут настроить свое приглашение (и заставить это обновить заголовок терминала), большинство используют поведение оболочки по умолчанию.

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

Учитывая это, вы можете обновить заголовок без вмешательства удаленных машин, например, используя сценарий оболочки для ssh , такой как этот:

#!/bin/bash
# trim parameters, leaving just the last (user@hostname or just hostname)
title=$(echo "$*" | sed -e 's/^.* //')
printf '\033]0;%s\007' "$title"
/usr/bin/ssh "$@"

и поместив его в путь к исполняемому файлу перед / usr / bin , вы можете вызвать , что «ssh», и задать ему строку заголовка при посещении каждой удаленной машины. После выхода из ssh ваше локальное приглашение сбросит строку заголовка обратно на локальный компьютер.

В последующем комментарии OP указал, что соединения выполняются с IP-адресом. Если удаленная машина имеет имя хоста, тогда процедура будет более понятной для использования этого или (если не в DNS) собрать имена хостов в локальном компьютере / etc / hosts . В конечном счете, DNS - это лучший способ ...

Для справки:

-1
01.06.2019, 16:39
1 ответ

Я понял. В целом проблема, с которой я столкнулся, заключалась в том, что я выполнил повторное направление -после того, как передал вывод команды

snmpstatus -c public -v1 192.168.1.240

to grep then sed в конце довольно длинной строки. В то время я не осознавал, хотя сейчас это совершенно очевидно, что направление re -любого stderr или stdout должно происходить сразу после соответствующей команды. Это важно, потому что я на самом деле нашел решение и отбросил его как странным образом не работающее, потому что я пытался -перенаправить на конец трубы.

Вот как -перенаправить stderr в переменную

error=$(snmpstatus -c public -v1 192.168.1.240 2>&1)
echo $error

Вот объяснение синтаксиса 0 = stdin1 = stdout2 = stderr> = redirect

Следовательно, 2>1 означает перенаправление stderr на stdout. & необходимо, поэтому 2>&1должно быть написано, но при чтении я не мог понять, почему.

Этот Stackoverflow ответ был очень полезным, как и эта очень хорошо написанная страница по -направлению .

1
28.01.2020, 05:09

Теги

Похожие вопросы