23 дек. 2008 г.

bash fork bomb!

Никада не вставляйте в свою консоль, даже пользовательскую (хотя, если ulimit -u дает не unlimited, а какое то фиксированное число, то жить будете, можно и вставить) вот ето:

:(){ :|:& };:

web-морда для find

И еще одна интересность. Я и сам не особо проникся синтаксисом find'a, но базово что то поискать могу. Маны надо читать по данному предмету... Но если очень надо какой нить заковыристый поиск, и вы даже знаете, что именно хотите аргументировать, только подобно собаке Павлова ничО сказать не можете на find-наречии, тогда вам сюда. В принципе, можно на базе этого и синтаксис подучить, разбирая по косточкам сочетание галочек и менюшек и их корреляции с командой на выходе. Да и просто на заметку, вдруг да пригодится. Хорошие ссылки живут долго.

Bash HotKeys Tutorial

Давно уже собирался или найти изобретенный велосипед, или скомпилить на коленке свой, тьфу, забыл export $велосипед = bash_hotkey_manual. Вот. И сегодня, поискивая вроде бы совсем другой сабж, наткнулся на очень приличную компиляцию горячих клавиш. Это конечно не избавляет от чтения официальной документации, но в качестве шпаргалки для повседневного использования очень даже ничего. Оговариваюсь, что придумал и собрал не сам, а цельностянул отседова, за что аффтару респект и трям. Итак, сопсно, сабж:
CTRL-команды:
Ctrl + a - переход к началу строки
Ctrl + b - аналог стрелки влево
Ctrl + c - отменить редактирование команды или прекратить работу
Ctrl + d - аналог Delete. Если строка пустая - выход из shell
Ctrl + e - переход к концу строки
Ctrl + f - аналог стрелки вправо
Ctrl + g - выход из режима дополнения
Ctrl + h - аналог BackSpace
Ctrl + i - аналог Tab
Ctrl + k - удалить всё до конца строки
Ctrl + l - очистить экран (набранная строка и даже позиция курсора остаётся)
Ctrl + r -  поиск по истории набранных команд
Ctrl + R - поиск по истории набранных команд назад (это когда есть несколько вариантов и проскочили нужный)
Ctrl + t - поменять местами текущий символ с предыдущим
Ctrl + u - удалить всё до начала строки
Ctrl + v - преобразует следующую клавишу в её символьное отображение (Enter - ^M, Esc - ^[ и т.д.)
Ctrl + w - удалить от курсора до начала слова
Ctrl + x дважды - скачок между началом строки и текущей позицией курсора
Ctrl + x @ - Показывает возможные варианты дополнения доменного имени
Ctrl + y - вставить из буфера (все удаляемое по горячим клавишам удаляется не просто так, а в буфер)
Ctrl + z - притормозить/остановить выполнение команды в фон
Ctrl + _ - отмена последнего изменения
ALT-команды
Alt + < - к первой команде в истории (вообще к самой первой в .bash_history) Alt + > - к последней команде в истории
Alt + ? - показать весь список вариантов дополнения (аналог 2Т - см. ниже)
Alt + * - вставить все возможные варианты дополнения
Alt + / - попытатся дополнить имя файла (из имеющихся в текущем каталоге)
Alt + . - вставить последний аргумент из предыдущей команды
Alt + b - влево на слово
Alt + c - сделать первую букву слова заглавной (и перейти к следующему слову)
Alt + d - удалить от текущей позиции до конца слова
Alt + f - вправо на слово
Alt + l - сделать все буквы слова строчными (или часть букв справа от курсора до конца слова) и перейти к следующему слову
Alt + n - искать по истории (но не сразу, а после полного ввода и нажатия Ентер)
Alt + p - искать по истории назад
Alt + r - очистить всю строку
Alt + t - поменять слова местами
Alt + u - сделать все буквы заглавными от текущей позиции до конца слова
Alt + BackSpace - Удалить от текущей позиции до начала слова
Esc-команды
Esc+d - удалить от курсора до конца слова
Esc+f - вправо на слово
Esc+b - влево на слово
Esc+t - поменять местами слова
Tab-команды
2T обозначает дважды нажатый Tab
2T - все доступные команды (это тоже все знают)
(string)2T - все доступные команды начинающиеся на string
/2T - все каталоги, включая скрытые. Для текущего надо набрать ./2Т
*2T - каталоги, кроме скрытых
~2T - все пользователи, присутствющие в /etc/passwd
~f2T - все пользователи, присутствющие в /etc/passwd, начинающиеся на f
$2T - все системные переменные
@2T - все записи в /etc/hosts
=2T - вывод наподобии ls или dir
Просто команды
!! - выполнить последнюю команду в истории
!abc - выполнить последнюю команду в истории, начинающуюся на abc
!a:p - напечатать последнюю команду в истории, начинающуюся на a
!n - выполнить n-ную команду в истории
!$ - посдедний аргумент последней команды
!^ - первый аргумент последней команды
^abc^xyz - заменить abc на xyz в последней команде и выполнить результат
Бум учить и пользовать ;)
В заключение - классный ресурс по сабжу различных bash-трюков, реально упрощающих жизнь.

18 дек. 2008 г.

FTP & VPN via NAT

Пакеты ftp и vpn соединений, изменяемые NAT-модулем iptable-са, по каким-то там причинам (это нужно углубляться в принцип сетевой трансляции адресов и особенности работы сих протоколов, на что нет ни времени, надобности для решения конкретной задачи) не могут нормально установить и поддерживать соединение. То есть в "заNATченной" сети по умолчанию выйти коннектом на внешний фтп или впн сервер нереально, отвалитесь по таймауту. А уж коли виноват в этом iptables, то им и лечится данная напасть. Лечево простое:
# modprobe ip_nat_ftp && modprobe ip_nat_pptp
Если работа с внешними ftp- и vpn- требуется постоянно, то 
nano /etc/modules
ip_nat_ftp
ip_nat_pptp
При условии конечно, что в INPUT-секции брандмауэра необходимые порты открыты, TCP 1723 для pptp и TCP 20, 21 для FTP.