Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 800521

.pdf
Скачиваний:
3
Добавлен:
01.05.2022
Размер:
4.21 Mб
Скачать

также относятся команды поиска дальше по тексту ''/'', поиск назад по тексту ''?'' и команда-фильтр ''!'' для передачи данных внешнему фильтру.

cat (сокр. от concatenate) - утилита, которая позволяет сцеплять, связывать файлы, выводить их содержимое. Например:

root@root:~$ ls test.txt

root@root:~$ cat test.txt This is a text from test.txt

Примеры использования:

1) cat filename1 filename2 > filename3

Команда ниже "сливает" первые 2 файла, и перемещает их в третий filename3 (уточнение: команда взяла информацию из первого и второго файла. Появилась некая новая информация, состоящая из двух источников. И эту информацию мы передали в файл filename3, благодаря символу ">").

2) cat filename1 >> filename2

Добавляет содержимое первого файла ко второму, не стирая его содержимое (в отличие от “>”).

3) [user@localhost ~]$ cat > filename1.txt

линукс номер один линукс первый

После ввода команды нажимаем Enter - это приведёт к появлению пустой строки, куда вводим строку текста, для перехода к следующей строке, нажимаем снова "Enter" и т.д.

Выход - [Ctrl]+[D].

Опции команды cat:

Опция A показывает все невидимые символы.

Опция -E показывает символы конца строки.

Опция -e показывает непечатаемые символы плюс символ конца строки

81

Опция -T показывает символ табуляции

Опция -t показывает непечатаемые символы плюс символ табуляции

Опция -v показывает непечатаемые символы кроме табуляции и конца строки.

Опция -b нумерует непустые строки. Опция -n нумерует все строки

Опция -s подавляет вывод повторяющихся пустых строк.

Опции --help и --version общеизвестны и не нуждаются в пояснении

$ - символ конца строки

* ^I обозначает символ табуляции,

rtt - min/avg/max/mdev — минимальное время/среднее время/максимальное время/квадратичное отклонение.

traceroute [-46dFITUnreAV] [-f first_ttl] [-g gate,...] [-i device]

[-m max_ttl] [-p port] [-s src_addr] [-q nqueries] [-N squeries] [-t tos] [-l flow_label] [-w waittime] [-z sendwait] [-UL] [-D] [-P proto] [--sport=port] [-M method]

[-O mod_options] [--mtu] [--back] host [packet_len]

Утилита ping позволяет только определить наличие проблемы, что узел не отвечает, но как узнать где обрывается соединение? Для этого применяется утилита traceroure.

Команда traceroute linux использует UDP пакеты. Она отправляет пакет с TTL=1 и смотрит адрес ответившего узла, дальше TTL=2, TTL=3 и так пока не достигнет цели. Каждый раз отправляется по три пакета и для каждого из них измеряется время.

find - поиск файлов

find список_поиска выражение

Команда find рекурсивно просматривает каждый из каталогов, перечисленных в списке_поиска, отыскивая файлы,

82

удовлетворяющие логическому выражению, построенному с помощью описанных ниже средств. В список_поиска могут входить и обычные файлы. Далее n обозначает целое десятичное число, на месте которого могут также указываться комбинации +n, что означает "больше, чем n", и -n, что означает "меньше, чем n". Элементарные логические выражения и их результаты:

-name шаблон_файлов. Истина, если текущий файл удовлетворяет шаблону_файлов. Символы шаблона, имеющие для shell'а специальный смысл, должны быть экранированы.

-print. Всегда истина; вызывает выдачу маршрутного имени текущего файла.

-cpio устройство. Всегда истина; вызывает вывод текущего файла на указанное устройство в формате cpio(1) (записями по 5120 байт).

Элементарные логические выражения могут комбинироваться с помощью следующих операций (в порядке уменьшения приоритета):

1.Унарная операция отрицания, обозначается ''!''.

2.Логическое И, обозначается пробелом.

3.Логическое ИЛИ, обозначается -o.

Примеры применения команды find: Примеры с опцией -name:

$ find /mnt/usb -name "*.mp3" -print

Произведет поиск всех файлов (об этом свидетельствует знак *), имеющих расширение .mp3 на USB-устройстве, смонтированном в каталог /mnt/usb.

$ find ~ -name "test*" -print

Выведет на экран список файлов домашнего каталога, начинающихся на test.

Если потребуется найти файлы, имеющие определенные режимы доступа, вам поможет опция -perm, которая легко в этом поможет.

83

К примеру, выполним поиск файлов с режимом доступа 775 (владелец и группа имеют полные права и ограничение на запись имеют остальные пользователи), находящихся в текущем каталоге:

$ find. -perm 775 -print

Поиск файлов какого-либо определенного пользователя крайне прост в своей реализации. Для этого достаточно выполнить команду:

$ find / -user admin -print

Вышеуказанная команда произведет поиск файлов в системе, принадлежащих пользователю admin.

Одной из удобных возможностей команды find, является возможность поиска файлов определенного типа. Рассмотрим варианты использования опции -type:

Поиск символических ссылок в каталоге /etc: $ find /etc -type l -print

Вывод на экран списка каталогов, присутствующих в каталоге /mnt/raid

$ find /mnt/raid -type d -print

Опция -size позволяет произвести поиск файлов определенного размера и имеет следующий вид при выполнении:

$ find . -size 2000k -print

Вышеуказанная команда отыщет и отобразит на экране файлы размером 2 мегабайта, находящийся в текущем каталоге. Если, к примеру, необходимо найти файлы размером менее (или более) 500 килобайт, то вид команды будет следующий:

$ find . -size –(+)500k -print

grep [-b] [-c] [-i] [-l] [-n] [-s] [-v]

ограниченное_регулярное_выражение [файл ...]

grep это вполне возможно самая популярная из существующих команд в Unix/Linux. Многие бы с этим поспорили, но стоит начать использовать grep, эта команда

84

будет присутствовать почти во всех ваших скриптах для консоли Linux. grep расшифровывается как ‘global regular expression printer‘. Иными словами, grep выдрезает нужные вам строки, из текстовых файлов, которые содержат указаный пользователем текст.

Использование grep в чистом виде

$ grep '12:00' /home/david/backup/log.txt

Эта команда показывает, как можно использовать grep для того чтобы получить строки из файла содержащие подстроку указаную в командной строке. Файл не обязательно должен оканчиваться на .txt. Показаная выше команда производит поиск подстроки 12.00 в файле

/home/david/backup/log.txt и отображает все строки где эта подстрока встречается.

Эта комбинация может быть использована, например, для поиска бекапов которые происходили в 12:00.

$ grep -v '12.00' /home/david/backup/log.txt

А вот эта команда (с использованием ключа -v) наоборот покажет только те строки где подстрока ’12:00′ не встречается.

Некоторые дополнительные ключи команды grep:

-v: Выводи реверсивные результаты. Вместо того чтобы вывести строки где искомое было найдено — выводи те строки где искомой подстроки нет.

-c: Отключает стандартный способ вывода результата и вместо этого отображает только число обозначающее количество найденых строк.

-i: Делает поиск регистронезависимым

-w: Ведет поиск по цельным словам. Например, при обычном поиске строки ‘wood’ grep может найти слово ‘hollywood’. А если используется данный ключ, то будут найдены только строки где есть слово ‘wood’.

-l: Выводит только имена файлов где была найдена строка.

85

-r: Производит поиск рекурсивно по всем поддиректориям.

Команда awk сопоставляет строки исходных файлов с шаблонами, определенными в программе. Шаблоны можно задать либо непосредственно в командной строке, либо поместить в файл с именем программа и воспользоваться опцией -f. Если шаблоны указаны в командной строке, их следует заключить в одинарные кавычки ('), чтобы избежать интерпретации shell'ом.

Команде awk могут быть переданы аргументы в виде x=... y=... и т.д. Файлы читаются в том порядке, как они заданы. Если не указано ни одного файла или задано имя -, используется стандартный ввод. Ввод для awk делится на записи, разделяемые специальным символом. По умолчанию это перевод строки; в таком случае awk обрабатывает ввод построчно. Разделитель записей можно изменить, переопределив переменную RS. Каждая запись делится на поля, ограниченные разделителями полей (по умолчанию - пробелами). Этот разделитель можно изменить, переопределив переменную FS или указав флаг -Fсимвол. Поля исходных строк доступны по именам $1, $2; $0 - вся входная строка.

Для каждого шаблона из программы может быть задано действие, которое будет произведено со всякой строкой, успешно сопоставленной с шаблоном. Оператор шаблондействие имеет вид:

шаблон { действие }

dd (dataset definition) — программа UNIX,

предназначенная как для копирования, так и для конвертации файлов. Название унаследовано от оператора DD (Dataset Definition) из языка JCL.

Поскольку в UNIX очень многие объекты (жёсткие/гибкие диски, COM/LPT-порты, оперативная память

86

компьютера, память с кодом/данными каждого процесса) представлены в виде специальных файлов, спектр применения утилиты dd гораздо шире, чем кажется на первый взгляд. Регулярно возникает необходимость не просто скопировать файл или несколько файлов (для чего предназначена утилита cp), а скопировать первые n байт файла, пропустить m байт от начала, прочитать файл с дефектного носителя, транслировать содержимое файла в ASCII, «развернуть» порядок байтов в файле (Little-Endian vs. Big-Endian), просто скопировать очень большой файл или все вместе взятое. Для этой цели и служит dd. Кроме всего прочего, данная утилита позволяет скопировать регионы из файлов «сырых» устройств, например, сделать резервную копию загрузочного сектора жёсткого диска, или прочитать фиксированные блоки данных из специальных файлов, таких, как /dev/zero или /dev/random.

Базовые параметры

dd [--help] [--version] [status] [if=файл] [of=файл] [ibs=байты] [obs=байты] [bs=байты] [cbs=байты] [skip=блоки] [seek=блоки] [count=блоки] [conv={ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync}]

status=progress — отображает статистику передачи,

возможны 3 варианта 'none', 'noxfer', 'progress'

if=файл — читает данные из файла вместо стандартного ввода.

of=файл — пишет данные в файл вместо стандартного вывода.

bs=n — размер блока.

ibs=nn и obs=nn — задаёт, сколько байтов нужно считывать или записывать за раз.

count=n — сколько блоков скопировать.

seek=n — сколько блоков пропустить от начала в выходном файле перед копированием.

skip=n — сколько блоков пропустить от начала во входном файле перед копированием.

87

conv=фильтр,фильтр — применить фильтры конвертации. Типы фильтров:

ascii — сконвертировать в ASCII из EBCDIC… ebcdic — …и наоборот.

block — выравнивание блоков.

lcase — преобразовать к нижнему регистру. ucase — преобразовать к верхнему регистру. swab — менять местами пары байт.

noerror — игнорировать ошибки ввода-вывода.

Примеры использования: Записать ISO-образ «image.iso» на устройство sdb вместе с его загрузочным сектором и форматированием раздела в файловую систему образа (как правило, ISO 9660 или UDF):

dd if=image.iso of=/dev/sdb

Скопировать файл foo в файл bar: dd if=foo of=bar

Вывести на экран (в /dev/stdout) первые 256 байт файла

foo:

dd if=foo of=/dev/stdout bs=128 count=2

или:

dd if=foo bs=128 count=2

Предыдущая команда годится только для просмотра текстового файла. Содержимое бинарного файла рекомендуется смотреть так:

ddif=foo bs=1 count=10 2>/dev/null | hexdump

8.2.Контрольные вопросы

1.Редактор Vim

2.Утилита cat

3.Утилиты поиска find и grep

4.Команда awk

5.Команда копирования dd

88

9.УДАЛЕННЫЙ ДОСТУП

9.1.VPN

VPN (англ. Virtual Private Network – виртуальная частная сеть) – логическая сеть, создаваемая поверх другой сети, например, Internet. Несмотря на то, что коммуникации осуществляются по публичным сетям с использованием небезопасных протоколов, за счёт шифрования создаются закрытые от посторонних каналов обмена информацией. VPN позволяет объединить, например, несколько офисов организации в единую сеть с использованием для связи между ними неподконтрольных каналов.

По своей сути VPN обладает многими свойствами выделенной линии, однако развертывается она в пределах общедоступной сети, например Интернета. С помощью методики туннелирования пакеты данных транслируются через общедоступную сеть как по обычному двухточечному соединению. Между каждой парой «отправитель–получатель данных» устанавливается своеобразный туннель – безопасное логическое соединение, позволяющее инкапсулировать данные одного протокола в пакеты другого. Основными компонентами туннеля являются:

-инициатор

-маршрутизируемая сеть;

-туннельный коммутатор;

-один или несколько туннельных терминаторов.

Сам по себе принцип работы VPN не противоречит основным сетевым технологиям и протоколам. Например, при установлении соединения удаленного доступа клиент посылает серверу поток пакетов стандартного протокола PPP. В случае организации виртуальных выделенных линий между локальными сетями их маршрутизаторы также обмениваются пакетами PPP. Тем не менее, принципиально новым моментом

89

является пересылка пакетов через безопасный туннель, организованный в пределах общедоступной сети.

Туннелирование позволяет организовать передачу пакетов одного протокола в логической среде, использующей другой протокол. В результате появляется возможность решить проблемы взаимодействия нескольких разнотипных сетей, начиная с необходимости обеспечения целостности и конфиденциальности передаваемых данных и заканчивая преодолением несоответствий внешних протоколов или схем адресации.

Существующая сетевая инфраструктура корпорации может быть подготовлена к использованию VPN как с помощью программного, так и с помощью аппаратного обеспечения. Организацию виртуальной частной сети можно сравнить с прокладкой кабеля через глобальную сеть. Как правило, непосредственное соединение между удаленным пользователем и оконечным устройством туннеля устанавливается по протоколу PPP.

Наиболее распространенный метод создания туннелей VPN – инкапсуляция сетевых протоколов (IP, IPX, AppleTalk и т.д.) в PPP и последующая инкапсуляция образованных пакетов в протокол туннелирования. Обычно в качестве последнего выступает IP или (гораздо реже) ATM и Frame Relay. Такой подход называется туннелированием второго уровня, поскольку «пассажиром» здесь является протокол именно второго уровня.

Альтернативный подход – инкапсуляция пакетов сетевого протокола непосредственно в протокол туннелирования (например, VTP) называется туннелированием третьего уровня.

Независимо от того, какие протоколы используются или какие цели преследуются при организации туннеля, основная методика остается практически неизменной. Обычно один протокол используется для установления соединения с

90