Повторно выполните команду ФК из истории

Если ping ответов хоста затем тестирует если на строке (просто пример):

ping -c 10 $host

Если бы ping не возвращены/запрещены, я проверил бы на отдельные сервисы через nmap:

nmap $host -p $known_port --max-retries 10 | grep -q open

Например, чтобы протестировать, если ssh, как ожидают, будет открыт, замените known_port 22

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

declare -A SERVER
# SERVER["NAME - Description"]="IP KNOWNPORT"
SERVER["SERVER1 - Client foo"]="111.111.111.111 22"
SERVER["SERVER2 - Client bar"]="222.222.222.222 80"
# ...
# add as many server/port combinations as you'd like

NMAP_MAX_RETRIES=10

printf "========================= ========================= ========== ==========\n"
printf "%25s %25s %10s %10s\n" "Host Description" "IP" "Port" "Status"
printf "========================= ========================= ========== ==========\n"


for server in "${!SERVER[@]}"; do
    set -- ${SERVER["$server"]}
    eval nmap \$1 -p \$2 --max-retries $NMAP_MAX_RETRIES | grep -q open
    if [ "$?" == "0" ]; then
        STATUS="[OK]"
    else
        STATUS="*DOWN*" 
    fi
    printf "%25s %25s %10s %10s\n" "$server" "$1" "$2" "$STATUS" 
done

 printf "========================= ========================= ========== ==========\n"

При выполнении это возвращается (поддельный дюйм/с, таким образом, серверы снижаются):

 ~$ bash /tmp/foo.sh
 ========================= ========================= ========== ==========
          Host Description                        IP       Port     Status
 ========================= ========================= ========== ==========
      SERVER2 - Client bar           222.222.222.222         80     *DOWN*
      SERVER1 - Client foo           111.111.111.111         22     *DOWN*
 ========================= ========================= ========== ==========
7
21.12.2013, 02:48
2 ответа

Добавьте это к своему .bashrc:

fc() {
    command fc "$@"
    history -s fc $@
}
5
27.01.2020, 20:19
  • 1
    Хороший, это работает. Было бы аккуратно, если бы было встроенное решение вместо функции. Я буду награждать Вас щедростью в случае никаких лучших ответов. –  Bernhard 14.12.2013, 22:37

попытайтесь добавить Ваш fc 23 27 к истории и повторно вызывают его позже:

knoedel@section60:~> bash --version
GNU bash, version 4.2.42(1)-release (x86_64-suse-linux-gnu)

knoedel@section60:~> history -s "fc 4074 4076"
knoedel@section60:~> history | tail -n 2
 4090  15/12/2013 11:31:23 > fc 4074 4076
 4091  15/12/2013 11:31:25 > history | tail
knoedel@section60:~> fc -s 4090

так fc -s 4090 на самом деле выполнения fc 4074 4076 но только на этой сессии. Если Вы выходите из системы и входите снова в изменение чисел команды истории. По крайней мере, поскольку я протестировал его. (вероятно, когда BASH_HISTSIZE достигнут),

Чтобы постараться не выполнять неправильные команды, я предлагаю сохранить Ваши команды от истории до сценария оболочки с fc -n -l id id > ~/bin/something.sh

0
27.01.2020, 20:19
  • 1
    Спасибо за Ваш ответ. Только, я не понимаю, как это отличается от того @Baronsed? –  Bernhard 15.12.2013, 13:01
  • 2
    Вы попросили решение со встроенными инструментами - который является моим предложением. Я действительно не понял, почему Вы попросили такое решение во-первых. Baronsed уже ответил на Ваш вопрос, и можно использовать то же решение без того сценария удара. Я просто добавил немного текста для объяснения этого, хорошо? –  StefanKaerst 16.12.2013, 09:59
  • 3
    я надеялся на решение как: fc --keepinhistory 22 34 или export HISTNOTIGNORE=fc. Но, по-видимому, который не существует. спасибо –  Bernhard 16.12.2013, 10:02
  • 4
    , если Вы хотите использовать старые команды навсегда, отключает историю удара. в других отношениях новые команды stackoverflow.com/questions/18663078/disable-history-in-linux добавляются к истории (кроме ФК, который не является никакой новой командой, но выполнением старых снова - выполнение последней команды снова является тем же.. это не становится добавленным к истории), hth –  StefanKaerst 18.12.2013, 00:09
  • 5
    я не уверен, понимаю ли я то, что Вы пытаетесь сказать, но я не хочу отключать историю. Я только хочу fc управляйте, чтобы я ввел, чтобы быть добавленным к истории. –  Bernhard 18.12.2013, 09:43

Теги

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