Как просмотреть различия между страницами руководства для разных версий одной и той же программы?

В зависимости от того, насколько вы хотите автоматизировать, ожидайте - это вариант для ретрансляции данных через хост-бастион и во внутренние системы. "вводя" что-то в сеанс SSH, как это сделал бы человек, только быстрее:

#!/usr/bin/env expect

if {[llength $argv] == 0} {
  puts stderr "Usage: $argv0 bastion internalhost localfile"
  exit 1
}

set basthost [lindex $argv 0]
set desthost [lindex $argv 1]
set fileup   [lindex $argv 2]

spawn ssh -a -e none -o ClearAllForwardings=yes -x $basthost

# TODO login foo here for bastion host, e.g. send the password
# if see that prompt

expect {
  # TODO handle timeout, eof, etc.

  # TODO I have no idea what your ncurses interface looks
  # like, though there's doubtless something that could
  # be matched and the appropriate input sent to it...
  -ex "$ " {
    send -- "ssh $desthost\r"
    # TODO handle subsequent login to the internal host here
  }
}

Затем, когда у вас есть редактор или что-то еще, открытое на целевом хосте (с помощью соответствующих операторов send ), скармливайте ему данные via:

set upfd [open $fileup]
while {[gets $upfd line] >= 0} {
  send -- "$line\r"
}

А затем используйте дополнительные вызовы send для сохранения файла, выхода и т. д. Также, обработки ошибок и т. д.

4
17.01.2017, 01:54
2 ответа

Я обнаружил, что они используют службу спуфинга, чтобы скрыть настоящие следы:

2017-01-16 18:01:59 для хоста vps863.hidehost.net не найден IP-адрес (во время SMTP-соединения от [91.200. 12.140]) 16.01.2017 18:02:02 Ошибка аутентификации dovecot_login для (пользователя) [91.200.12.140]: 535 Неверные данные аутентификации (set_id = ftpuser) 16.01.2017 18:02:38 для хоста dedic867.hidehost.net не найден IP-адрес (во время SMTP-соединения от [91.200.13.25]) 2017-01-16 18:02:40 Ошибка аутентификатора dovecot_login для (Пользователь) [ 91.200.13.25]: 535 Неверные данные аутентификации (set_id = jimmy) 2017-01-16 18:03:09 для IP-адреса 148.153.1.90

-121- не найдено имя хоста --182461-

Страницы руководства, когда-то преобразованные в удобочитаемую форму, представляют собой текстовые файлы, которые вы можете сравнивать с помощью любого инструмента, который вам подходит. Вот два примера, как две функции bash для двух инструментов: diff и vimdiff . Адаптируйте их к своему любимому инструменту.

С vimdiff :

vimdiff_man() { vimdiff -R <(man --manpath="/old/path/to/man" "$1") <(man "$1"); }

С diff бок о бок, настроенными на ширину экрана:

diff_man() (
    width="${COLUMNS:-80}"
    export MANWIDTH=$((width / 2 - 2))
    diff -y -W"$width" <(man --manpath="/old/path/to/man" "$1") <(man "$1") | less
)

В каждой функции я различаю два псевдофайла <(...) , каждый из которых содержит в скобках результат выполнения команды man (это подстановка процесса bash ).

/ old / path / to / man - это иерархия каталогов, содержащая ваши старые справочные страницы. Ожидается, что он будет иметь те же второстепенные уровни man man1 , man2 , ... как и ваш основной справочный каталог (вероятно, / usr / share / man ). Измените его под свои нужды.

Использование:

diff_man sshd_config
vimdiff_man sshd_config
7
27.01.2020, 20:48

Извините, ребята, я не смог устоять перед этим ... Изменение принятого ответа следующим образом:

diff -y -w -W 150 <(links -dump  "http://man.he.net/?topic=grep&section=all" |less |fold -s -w 70) <(man grep |less |fold -s -w 70)

Вы можете сравнить расположенные рядом локальные установленные страницы руководства со страницами онлайн-руководства .... Мне просто понравилось, и я подумал Поделиться этим.

Вы можете заменить man.he.net своей любимой онлайн-программой просмотра справочных страниц (например, https://manpages.debian.org ).

Это даже прекрасно работает:

diff -y -w -W 150 <(links -dump "https://www.mankier.com/?q=grep" |less |fold -s -w 70) <(man grep |less |fold -s -w 70)

PS: -w необходимо, чтобы игнорировать все пробелы и сравнивать только строки. less используется в обоих случаях для единообразного формата при чтении и сравнении.

2
27.01.2020, 20:48

Теги

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