bash
Подключение по ssh с x11 forwarding по умолчанию
Я очень часто подключаюсь к разным линукс машинам с помощью вот такой команды:
ssh host -X -C
- -X — включается проброска x11 трафика
- -C — осуществляется сжатие трафика
Эту комманду я использую для того, чтобы запускать на удаленной машине всякие графические программы - медленно, но очень удобно (хотя, я, конечно же, предпочитаю консоль и всегда, когда возможно, пытаюсь использовать ее).
Вообщем, мне надоело каждый раз вводить параметры, и я решил один раз разобраться, как сделать так, чтобы это все было по умолчанию. Ответ нашелся в man 5 ssh_config. Всего-то нужно создать файл ~/.ssh/config, следующего содержания:
ForwardX11 yes
Compression yes
UPDATE 24.03.2009 — изначально я писал, что в файл ~/.ssh/config стоит писать так же CompressionLevel 9, но это неправильно. Вот фрагмент man ssh: Compression is desirable on modem lines and other slow connections, but will only slow down things on fast networks. . Действительно, с этой настройкой работает медленее, так что ее лучше не указывать.
Отслеживаение подключенных пользователей
Возникла задача — оперативно узнать, подключился ли пользователь по ssh к linux машине.
С помощью команды who можно элементарно узать, кто сейчас подключен:
bessarabov@server:~$ who
bessarabov pts/0 2008-08-06 15:35 (1.1.1.1)
Для того, чтобы оперативно узнать, кто подключен, нужно просто запускать часто эту команду и смотреть на ее вывод. Без проблем можно все время руками ее запускать, но соврешенно просто это автоматизировать.
В bash существует возможность писать циклы. Чуть-чуть разобратся и получается вот такая команда (она бесконечно запускает who (останавливается по ctrl+C)):
$ until false; do who; done
О! Почти то, что нужно. Немного причесываю и готово:
$ until false; do date; who; echo “”; sleep 1; done
My bash history
Наткнулся на интересный пост.
Следующая консольная команда linux-а отображает список разных программ, которые запускал пользователь, с указанием количества их запуска:
history 1000 | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head -n 50
Вот мой вывод этой команды на моей домашней машине (все что меньше 10 я показывать не стал):
123 cd 85 sudo 59 ls 49 vim 31 svn 25 ping 22 clear
| M | T | W | T | F | S | S |
|---|---|---|---|---|---|---|
| « Jun | ||||||
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 | |||||