Будьте введены от редактора (vim/nano/emacs/textmate?)

IPTables не регистрируется, если Вы не добавляете правило добавить запись в журнале. Это обычно делается с местом назначения ЖУРНАЛА-j. Запись в журнале отправляется в журнал ядра, и Ваш демон системного журнала определяет, куда записи в журнале ядра идут, который, кажется,/var/log/messages в Вашем случае.

Если Вы хотите заблокировать ping от определенного хоста (вымышленный 123.456.789.10, например), и зарегистрировать все те пакеты, работать:

iptables -A INPUT -p icmp --icmp-type 8 --source 123.456.789.10 -j LOG
iptables -A INPUT -p icmp --icmp-type 8 --source 123.456.789.10 -j DROP
4
22.03.2012, 18:27
4 ответа

Команда vipe в пакете moreutils позволяет Вам запускать $EDITOR посреди конвейера.
Можно получить желаемое поведение как так:

$ </dev/null vipe |sort -nr | uniq -c 
7
27.01.2020, 20:48

Я предполагаю Ваш единственный шанс сделать, он работать с любым видом редактора должен использовать временные файлы:

FILE=$(mktemp); $EDITOR "$FILE"; <"$FILE" …command… ; rm "$FILE"

(Однако это не позволяет запускать команду, прежде чем полный вход будет обеспечен.)

Также можно использовать echo "# please insert your input bellow" >"$FILE" перед вызовом к $EDITOR вставить комментарий, который обнаружится в редакторе. Убедитесь, что это не будет влиять на поведение команды (или просить, чтобы пользователь явно удалил его).

3
27.01.2020, 20:48
  • 1
    Кроме того, заметьте это rlwrap command позволяет редактирование строки (с историей) от терминала и мог бы быть достаточно для Ваших потребностей. –  Stéphane Gimenez 22.03.2012, 17:11
  • 2
    Это также характерно для пред, заполняют файл с некоторыми строками комментария, дающими инструкции. –  psusi 22.03.2012, 17:22
  • 3
    Можно ли расшириться, пример, чтобы иметь предварительно заполненный tempfile как psusi описывает? Помимо Вашего примера не работает - он испытывает недостаток в аргументе. Кажется, что этот ответ является способом пойти. Также: почему это <"$FILE" command; нет command <"$FILE";? –  Nils Riedemann 22.03.2012, 20:20
  • 4
    @Nils: Посмотрите редактирование. command был предназначен, чтобы быть замененным фактической командой :-) And для последнего вопроса: это - то же. –  Stéphane Gimenez 22.03.2012, 20:31
  • 5
    Когда я использую FILE=$(mktemp); $EDITOR "$FILE"; <"$FILE" sort -c; rm "$FILE" Я добираюсь usage: mktemp [-d] [-q] […shortened] и zsh: no such file or directory:\n rm: : No such file or directory :/Vim также открывается, но я не могу сохранить файл (никакое имя файла) –  Nils Riedemann 22.03.2012, 20:37

Emacs имеет возможность работать, оболочка в одном из ее буфера (используйте оболочку M-X). Но запущенные процессы все еще получили бы свой вход от stdin, их stdin просто будет псевдотерминалом, другой конец которого был бы emacs.

0
27.01.2020, 20:48

В Emacs можно выполнить любую команду и обеспечить содержание одного из буферов Emacs (выбранный регион, чтобы быть точными) как stdin к приложению.

Например, если содержание Вашего буфера Emacs будет ls и Вы отмечаете его как регион (использование C-SPC), затем выполненный shell-command-on-region (M-|) и тип как команда bash (полная комбинация: M-| command RET) будет ls выполняемый в bash и вывод будет открыт как новый буфер.

Если Вы используете C-u M-| command RET на регионе вывод заменит отмеченную команду в Вашем текущем буфере.

0
27.01.2020, 20:48

Теги

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