В процессе работы с операционными системами 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 -G <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
В комментариях, надеюсь, будет еще много подобных примеров
Автор: 3vi1_0n3