Pull to refresh

*nix-way: Даже если тебя съели, у тебя есть как минимум два выхода

Reading time 2 min
Views 31K
В процессе работы с операционными системами GNU/Linux обычно привыкаешь делать какие-то операции одними и теми же средствами. Философия UNIX (*nix-way) предполагает наличие большого количества простых программ для выполнения простых действий, а результаты работы можно передавать между разными программами через потоки. Но вот представьте, что возникает ситуация, когда кто-то нечаянно, по глупости или из нехороших побуждений удалил исполнимый файл, который являлся бинарным файлом какой-то команды, которой вы более или менее часто пользовались. И что тогда делать?

И вот здесь начинается самое интересное. Практика показывает, что многие вещи можно делать более чем одним способом. Я попытался составить небольшой список взаимозаменяемых действий, которые в Linux могут быть выполнены более чем одним способом.



1) Нумерация строк
nl <file>
=
cat -n <file>


2) Просмотр таблицы маршрутов
route -e
=
netstat -r
=
ip route


3) Просмотр списка сетевых интерфейсов
ifconfig -s
=
netstat -i
=
ip addr


4) Создание пользователя:
adduser <username>
=
useradd <username>; mkdir /home/<username>; chown <username>:<username> /home/<username>; passwd <username>


5) Блокировка пароля пользователя
passwd -l <username>
=
usermod -L <username>


6) Разблокировка пароля пользователя
passwd -u <username>
=
usermod -U <username>


7) Добавление пользователя в группу
adduser <username> <groupname>
=
usermod -aG <groupname> <username>


8) Смена группы владения файла
chown :<groupname> <filename>
=
chgrp <groupname> <filename>


9) Просмотр содержимого директории
ls
=
dir
=
vdir


10) Создание жесткой ссылки
ln <file> <linkname>
=
cp -l <file> <linkname>


11) Создание символической ссылки
ln -s <file> <linkname>
=
cp -s <file> <linkname>


12) Замена traceroute командой ping. Не совсем честный способ, потому что разные типы пакетов ICMP, но в общем случае подходит, если все хосты трассы пингуемы.
traceroute remote-host
=
pingtrace.sh (Если в качестве аргумента указать айпишник, то трасса получается ОЧЕНЬ быстро)
#!/bin/bash
REMOTE_HOST=$1
REMOTE_HOST_2=`host $1 | grep 'has address' | awk '{printf $4}'`
TARGET_HOST="_"
TARGET_TTL=1

echo Tracing host $REMOTE_HOST\($REMOTE_HOST_2\)

while [ "$REMOTE_HOST" != "$TARGET_HOST" -a "$REMOTE_HOST_2" != "$TARGET_HOST" ]
do
    TARGET_HOST=`ping -c 1 -t $TARGET_TTL $REMOTE_HOST | grep 'exceeded' | awk '{printf $2}'`
    if [ "$TARGET_HOST" != "" ]
    then
        echo $TARGET_HOST, TTL=$TARGET_TTL
        TARGET_TTL=$(($TARGET_TTL+1))
    else
        echo $REMOTE_HOST, TTL=$TARGET_TTL
        exit
    fi
done


В комментариях, надеюсь, будет еще много подобных примеров
Tags:
Hubs:
+69
Comments 126
Comments Comments 126

Articles