Действительно ли там что-нибудь эквивалентно getch () в ksh?

Попробуйте минимальную установку Debian с LXDE или XFCE как настольная среда. Вероятно, самая старая поддерживаемая стабильная версия будет самой скромной в использовании ресурсов. На той установке, в чем Вы нуждаетесь и проверяете конфигурацию так, чтобы не было ничего выполнение unneded. Если у Вас будет запас, то Debian в другом месте, имея некоторую производную будет достаточно знаком для чувства не совсем дома и достаточно отличающийся, чтобы быть приводящим в бешенство.

6
08.02.2015, 21:32
2 ответа

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

x='';while [[ "$x" != "A" ]]; do read -n1 x; done

READ -N 1 Читать 1 символ.

Это должно работать в bash , но вы можете проверить, работает ли он в KSH

8
27.01.2020, 20:25

Анализ выходных данных w , вероятно, лучше, чем кто . Вот некоторые репрезентативные данные, которые показывают время входа в систему:

$ who
tom      pts/1        2015-11-15 06:39 (michener:S.0)
$ w
 06:40:10 up  1:04,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
tom      pts/1    michener:S.0     06:39    2.00s  0.03s  0.00s w

Они более доступны, чем палец . Поскольку это упражнение является классным упражнением, анализ данных оставлен на усмотрение OP. В качестве подсказки, awk может сделать больше, чем напечатать свои поля в одной строке:

  • Обычно, чтобы обработать вывод w , в скрипте awk имеется раздел BEGIN (для установки номера строки или состояния).
  • Тогда действие по умолчанию для каждой строки (только фигурные скобки без образца) увеличит номер строки.
  • Используя номер строки, обработайте первую строку специально (пропустите ее в этом случае: OP может потребоваться количество пользователей для заголовка отчета, но это не используется в примере OP) и пропустите строку с помощью USER .
  • После этого каждую строку можно распечатать по мере необходимости. awk выйдет, когда больше нет данных; для этого необязательно знать количество пользователей.

Если OP получает команду использовать who , это имеет опции для перечисления дополнительной информации, например,

$ who -l -u
LOGIN    tty5         2015-11-15 05:36              3670 id=5
LOGIN    tty6         2015-11-15 05:36              3671 id=6
LOGIN    tty4         2015-11-15 05:36              3669 id=4
LOGIN    tty3         2015-11-15 05:36              3668 id=3
LOGIN    tty2         2015-11-15 05:36              3667 id=2
LOGIN    tty1         2015-11-15 05:36              3666 id=1
tom      pts/1        2015-11-15 06:39 00:06        5780 (michener:S.0)
tom      pts/2        2015-11-15 06:52   .          6078 (michener:S.1)

снова, с указанием имени терминала и времени входа в систему.

-121--138835-

Итак, вот решение, которое сработало:

iptables -I FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -s 192.168.43.51 ! -d 192.168.43.1 -j DROP
-121--216744-
#!/bin/ksh

# KSH function to read one character from standard input
# without requiring a carriage return. To be used in KSH
# script to detect a key press.
#
# Source this getch function into your script by using:
#
# . /path/to/getch.ksh
# or
# source /path/to/getch.ksh
#
# To use the getch command in your script use:
# getch [quiet]
#
# Using getch [quiet] yields no output.

getch()
{
   STAT_GETCH="0"
   stty raw
   TMP_GETCH=`dd bs=1 count=1 2> /dev/null`
   STAT_GETCH="${?}"
   stty -raw

   if [[ "_${1}" != "_quiet" ]]
   then
       print "${TMP_GETCH}"
   fi
   return ${STAT_GETCH}
}
1
27.01.2020, 20:25

Теги

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