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

в 9:39, , рубрики: bash, linux, системное администрирование, скрипты, метки: , ,

В процессе работы с операционными системами 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

Источник

Поделиться

* - обязательные к заполнению поля