Архив рубрики: Терминал

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

Как узнать версию ядра Linux

Ядро Linux - это один из самых важных компонентов операционной системы. Ядро выступает посредником между программами и аппаратным обеспечением, контролирует процессы, управляет памятью, предоставляет доступ к сети. Это основа операционной системы, в которой выполняются большинство важных процессов.

Довольно часто выходят новые версии ядра, которые нужно устанавливать, чтобы вовремя получать новые возможности, а также исправления проблем с безопасностью. Но для начала неплохо бы знать какая версия установлена сейчас. В этой статье мы рассмотрим как узнать версию ядра Linux. Для этого существует несколько способов.

Читать далее Как узнать версию ядра Linux

Как пользоваться curl

Нам часто приходится загружать различные файлы из интернета, например, исполняемые файлы программ, файлы скриптов, архивы с исходниками. Но не всегда это нужно делать через браузер. Во многих ситуациях гораздо проще выполнить все действия через терминал. Поскольку таким образом вы можете автоматизировать процесс. С другой стороны, веб-мастерам время от времени приходится тестировать доступность веб-сайтов, проверять отправляемые и получаемые заголовки и многое другое.

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

Читать далее Как пользоваться curl

Как скачать файл Linux

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

Что же делать, когда нужно скачать файл Linux через терминал? Для этого существует несколько утилит и даже консольных браузеров. В этой статье мы рассмотрим самые популярные способы загрузки файла в Linux, которые применяются наиболее часто. Рассмотрим примеры применения таких утилит и их возможности.

Читать далее Как скачать файл Linux

Работа с Bash

Bash - это самый популярный интерпретатор команд, который используется в большинстве дистрибутивов Linux. Вы сталкиваетесь с Bash каждый раз, когда открываете терминал в своей системе и начинаете выполнять там команды, а также когда пишите различные скрипты для автоматизации выполнения системных задач.

Мы уже много писали о Bash, его возможностях и особенностях, теперь пришло время написать статью, в которой будет описана работа с Bash в целом, как пользоваться Bash, горячие клавиши и другие полезные моменты, которые помогут вам пользоваться Bash более эффективно.
Читать далее Работа с Bash

Как пользоваться nslookup

Иногда может возникнуть необходимость проверить работоспособность DNS, посмотреть как быстро работает сервер, увидеть IP адрес и скорость его получения для определенного домена. Для этого используется утилита nslookup. С помощью нее вы можете не только получить IP адрес по домену, но и выполнить обратное преобразование, а также проверить установлены все необходимые записи DNS.

В этой статье мы рассмотрим как пользоваться nslookup, что делает эта утилита, а также ее синтаксис и опции.

Читать далее Как пользоваться nslookup

Циклы Bash

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

С помощью циклов вы можете очень сильно сократить количество строк кода, которые необходимо написать для однотипных операций. В этой статье мы рассмотрим что такое циклы Bash, как их создавать и использовать.
Читать далее Циклы Bash

Как убить процесс Linux

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

В этой статье мы рассмотрим несколько самых распространенных способов завершить процесс Linux. Опишем подробно как происходит остановка процесса и как все сделать правильно.
Читать далее Как убить процесс Linux

Ошибка отказано в доступе Linux

Новые пользователи довольно часто сталкиваются с такой ошибкой, как ошибка отказано в доступе Linux. Если вы только что перешли с Windows, то можете еще не знать всех особенностей операционной системы Linux и почему возникает такая проблема.

В этой статье мы рассмотрим причины ошибки access denied linux, а также как ее обойти.

Ошибка отказано в доступе Linux

Наиболее часто такая ошибка встречается, в таких случаях:

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

В операционной системе Linux действует сложная система полномочий. Настройки доступа для каждого файла настраиваются тремя параметрами - чтение, запись и выполнение. Эти параметры устанавливаются для трех категорий - владелец файла, группа файла и все остальные пользователи.

Если вы попытаетесь получить доступ, например, открыть для чтения файл, к которому вам доступ не разрешен, то вы получите такую ошибку. А учитывая что все устройства, сокеты, и другие системные объекты - это тоже файлы, то вы будете получать такую ошибку всегда, когда попытаетесь сделать то, что вам не позволено. Самый простой способ обойти такой запрет - это выполнять нужную команду от имени суперпользователя.

Многие программы проверяют после запуска от какого пользователя они запущены и говорят, что их нужно запускать от имени суперпользователя, но так ведут себя не все. Например, команда ls вернет ошибку отказано в доступе linux если вы попытаетесь посмотреть содержимое каталога суперпользователя:

ls /root

Но эта же команда нормально отработает нормально при использовании команды sudo:

sudo ls /root

Другой случай, это если вы обнаруживаете проблему в логах какого-либо системного сервиса, например, веб-сервера Apache. Казалось бы, должно было быть все верно, потому что запуск и так выполняется от имени суперпользователя.

Но нет, сервисы не только запускаются от имени суперпользователя, но потом, для увеличения безопасности они меняют пользователя на обычного, не привелигированного. Например, Apache работает от имени пользователя apache или www-data. Уже от имени этого пользователя программа пытается получить доступ к файловой системе.

Если нужная папка не доступна этому пользователю для чтения то вы получите ошибку access denied linux. Обычно, в логе программа сообщает какая папка или файл нужен когда происходит ошибка.

Вам просто нужно поменять на него права с помощью утилиты chmod или изменить владельца chown. Причем, нужно чтобы ко всем подкаталогам на пути к целевому каталогу был доступ у программы. Например, нельзя так чтобы права на чтение /home/ не было, а на /home/user/ было. Так не пройдет.

Права разрешающие чтение и запись владельцу и только чтение для группы и остальных вставляются командой:

sudo chmod 755 /путь/к/файлу

Или для смены прав для всех файлов в каталоге и самого каталога:

sudo chmod -R 755 /путь/к/каталогу

Или вы можете изменить владельца, обычно, это более безопасная и распространенная практика:

sudo chown пользователь /путь/к/файлу
$ sudo chown -R пользователь /путь/к/каталогу

Имя пользователя, от имени которого работает сервис вы можете посмотреть с помощью команды:

sudo ps aux | grep имя_сервиса

После того как вы установите правильные права, ошибка отказано в доступе linux больше не будет встречаться.

Выводы

В этой статье мы рассмотрели что делать если случается ошибка нет доступа linux, а также почему она возникает. Надеюсь, эта информация была полезной для вас. Если остались вопросы, спрашивайте в комментариях!

Массивы Bash

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

Язык сценариев Bash тоже имеет свои возможности работы с массивами. В этой статье мы рассмотрим как работают массивы Bash, как их создавать и использовать. В некоторых случаях это очень удобно.

Массивы Bash

Массивы оболочки Bash работают почти так же, как и в других языках программирования. Перед тем как вы сможете использовать массив, его нужно объявить. Это можно сделать несколькими способами, первый из них - это использование команды оболочки declare:

declare -a имя_массива

Но необязательно делать именно так, вы можете сразу начать задавать элементы массива по нужным номерам:

имя_массива[XX] = значение

Здесь XX обозначает индекс массива. Еще один удобный способ создавать массивы строк Bash - это просто перечислить все элементы в круглых скобках:

имя_массива=( элемент_1 элемент_2 элемент_3 ... )

Или вы можете сразу задать индекс массива для каждого из элементов:

имя_массива=( [XX]=значение [XX]=значение . . . )

Также можно прочитать значения для массива из клавиатуры или другого источника ввода:

read -a имя_массива

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

${имя_массива[XX]}

Это все основные моменты, которые будут вам полезны при использовании массивов, теперь нам осталось рассмотреть основные примеры, чтобы вам было более понятно как все это работает.

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

Теперь рассмотрим примеры массивов bash. Сначала нам нужно создать массив, который мы будем использовать для примеров, на мой взгляд будет проще использовать синтаксис с круглыми скобками. Вообще, массивы используются в скриптах, но мы будем их применять прямо в оболочке Bash. Для начала так будет проще. Создаем массив:

array=(первый второй третий четвертый пятый)

Теперь попытаемся вывести один из элементов массива по его индексу:

echo ${array[1]}
$ echo ${array[2]}
$ echo ${array[0]}

Чаще всего используются массивы строк Bash, но иногда могут встречаться и цифры. Помните про нумерацию? Индексы элементов массива начинаются с нуля. Для вывода значения элемента по индексу можно использовать и немного другой синтаксис:

echo ${array:0}

Вы можете вывести все элементы:

echo ${array[@]}

Все элементы, начиная с номера 1:

echo ${array[@]:1}

Вывести все элементы которые находятся в диапазоне от 1 до 4:

echo ${array[@]:1:4}

Чтобы узнать длину первого элемента выполните:

echo ${#array[0]}

А посмотреть количество элементов массива Bash можно таким же синтаксисом:

echo ${#array[@]}

Кроме всего прочего, вы можете заменить одни символы в определенном элементе массива или во всем массиве на другие. Для этого используйте:

echo ${array[@]//р/Р}

В некоторых случаях, для перебора элементов массива очень удобно использовать циклы. На этот раз сделаем небольшой скрипт:

#!/bin/bash

array=(первый второй третий четвертый пятый)
for i in ${array[@]}
do
echo $i
done

Внутри цикла вы можете делать со значением элемента все, что вам нужно. Как я уже писал выше, вы можете прочитать значения для массива с помощью функции read:

#!/bin/bash

echo "Введите элементы массива:"
read -a array
echo "Результат:"
for i in ${array[@]}
do
echo $i
done

Как и в любом другом варианте, вам нужно, чтобы все элементы были разделены пробелом. Точно так же можно присвоить массиву результат выполнения команды. Например, сохраним список файлов, полученный от ls:

 array=( $(ls /) )

Усложним задачу и сделаем скрипт, который будет выводить все файлы из указанной директории, которые имеют права доступа 755:

vi lsperm.sh

#!/bin/bash

ERR=27
EXT=0

if [ $# -ne 1 ]; then
echo "Используйте: $0 <путь>"
exit $ERR
fi

if [ ! -d $1 ]; then
echo "Каталог $1 не существует"
exit $ERR
fi

temp=( $(find $1 -maxdepth 1 -type f) )

for i in "${temp[@]}"
do
perm=$(ls -l $i)
if [ `expr ${perm:0:10} : "-rwxr-xr-x"` -eq 10 ]; then
echo ${i##*/}
fi
done

exit $EXT

Теперь проверим наш скрипт на папке /bin. Но перед этим нужно дать ему права на выполнение:

chmod u+x ./lsperm.sh
$ ./lsperm.sh

Как видите, все работает. Кроме номеров, в качестве индексов для массивов можно использовать строки. Такие массивы Bash называются ассоциативными и поддерживаются они начиная с четвертной версии Bash. Для создания ассоциативного массива используется declare с опцией -A:

declare -A assoc_array

assoc_array[first]=первый
$ assoc_array[last]=последний

echo ${assoc_array[first]}
$ echo ${assoc_array[last]}

Несмотря на то что Bash поддерживает только одномерные массивы, мы можем выполнять симуляцию работы с многомерными матрицами с помощью ассоциативных массивов:

declare -A matrix

arr[0,0]=0
$ arr[0,1]=1
$ arr[1,0]=2
$ arr[1,1]=3

echo "${arr[0,0]} ${arr[0,1]}"

Чтобы удалить массив, созданный с помощью declare используйте функцию unset:

unset matrix

Выводы

В этой статье мы рассмотрели как работают массивы Bash в Linux, как их создавать, а также как использовать. Если разобраться, то здесь нет ничего очень сложного, а массивы могут стать очень важным элементов ваших скриптов.

Как пользоваться telnet

Telnet - это сетевая утилита, которая позволяет соединиться с удаленным портом любого компьютера и установить интерактивный канал связи, например, для передачи команд или получения информации. Можно сказать, что это универсальный браузер в терминале, который умеет работать со множеством сетевых протоколов.

Эта утилита очень часто использовалась раньше, для удаленного управления компьютером с Linux, но потом ей на замену пришел защищенный протокол SSH. Но telnet все еще используется, например, для тестирования сети, проверки портов, а также для взаимодействия с различными IoT устройствами и роутерами. В этой статье мы рассмотрим что такое telnet, а также как пользоваться telnet для решения своих задач.

Что такое Telnet?

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

Для работы с этим протоколом мы будем использовать утилиту telnet, ею очень просто пользоваться. Давайте рассмотрим синтаксис telnet:

$ telnet опции хост порт

Хост - это домен удаленного компьютера, к которому следует подключиться, а порт - порт на этом компьютере. А теперь давайте рассмотрим основные опции:

  • -4 - принудительно использовать адреса ipv4;
  • -6 - принудительно использовать адреса ipv6;
  • -8 - использовать 8-битную кодировку, например, Unicode;
  • -E - отключить поддержку Escape последовательностей;
  • -a - автоматический вход, берет имя пользователя из переменной окружения USER;
  • -b - использовать локальный сокет;
  • -d - включить режим отладки;
  • - режим эмуляции rlogin;
  • -e - задать символ начала Escape последовательности;
  • -l - пользователь для авторизации на удаленной машине.

Это все, что касается команды telnet для установки соединения. Но соединение с удаленным хостом, это только полдела. После установки подключения telnet может работать в двух режимах:

  • Построчный - это предпочтительный режим, здесь строка текста редактируется на локальном компьютере и отправляется только тогда, когда она будет полностью готова. Но такая возможность есть не всегда и не у всех сервисов;
  • Посимвольный - все набираемые вами символы отправляются на удаленный сервер. Тут будет сложно что-либо исправить, если вы допустили ошибку, потому что Backspace тоже будет отправляться в виде символа и стрелки движения тоже.

Использование telnet заключается в передаче специальных команд. У каждого сервиса свои команды, но у протокола есть свои команды telnet, которые можно применять в консоли telnet.

  • CLOSE - закрыть соединение с сервером;
  • ENCRYPT - шифровать все передаваемые данные;
  • LOGOUT - выйти и закрыть соединение;
  • MODE - переключить режим, со строчного на символьный или с символьного на строчный;
  • STATUS - посмотреть статус соединения;
  • SEND - отправить один из специальных символов telnet;
  • SET - установить значение параметра;
  • OPEN - установить подключение через telnet с удаленным узлом;
  • DISPLAY - отобразить используемые спецсимволы;
  • SLC - изменить используемые спецсимволы.

Мы не будем рассматривать все команды, поскольку они вам вряд ли понадобятся, а если и понадобятся, то вы легко сможете их найти в официальной документации.

Как пользоваться telnet?

Дальше мы рассмотрим как использовать telnet для решения ваших задач. Обычно, утилита уже установлена в большинстве систем, но если это не так, то вы можете установить telnet из официальных репозиториев, например, в Ubuntu:

sudo apt install telnet

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

1. Доступность сервера

Утилита все еще может быть полезной при поверке доступности узла, для этого просто передайте ей ip адрес или имя хоста:

telnet 192.168.1.243

Для этого не обязательно применять telnet, есть ping.

2. Проверка порта

C помощью telnet мы можем проверить доступность порта на узле, а это уже может быть очень полезным. Чтобы проверить порт telnet выполните:

telnet localhost 123
$ telnet localhost 22

В первом случае мы видим, что соединение никто не принимает, во втором же выводится сообщение об успешном подключении и приветствие SSH сервера.

3. Отладка

Чтобы включить режим отладки и выводить более подробную информацию во время работы используйте опцию -d во время подключения:

sudo telnet -d localhost 22

4. Консоль telnet

Использование консоли telnet тоже важный момент в разборе как пользоваться telnet. В основном режиме вы можете выполнять команды, на удаленном сервере, если же вы хотите адресовать команду именно telnet, например, для настройки ее работы, необходимо использовать спецсимвол для открытия консоли, обычно утилита сразу говорит вам что это за символ, например, по умолчанию используется "^[":

Для его активации вам нужно нажать сочетание клавиш Ctrl+[, затем вы уведите приглашение ввода telnet.

Чтобы посмотреть все доступные команды, вы можете набрать ?. Например, вы можете посмотреть статус подключения:

telnet> status

Здесь есть и другие интересные возможности. Такие вещи можно проделывать при любом подключении с помощью утилиты telnet.

5. Посмотреть сайт telnet

Один из распространенных способов использования telnet - это тестирование сайта из консоли. Да, красивую веб-страницу вы не получите, но можете вручную собрать запросы и видеть все переданные сервером данные.

telnet opennet.ru 80

Затем наберите команду веб-серверу:

GET /

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

6. Удаленное управление telnet

Настоятельно не рекомендуется использовать небезопасный telnet для удаленного управления, потому что все команды и пароли могут быть прослушаны сторонним пользователем. Но иногда, например, для роутеров telnet все же используется для удаленного управления. Все работает точно так же, как и для других подключений, только нужно использовать порт 23, а на удаленном компьютере должен быть установлен telnet-server:

telnet localhost 23

Тут порт можно даже не указывать, потому что по умолчанию будет использоваться именно 23. Далее, вам нужно ввести логин и пароль, а затем вы сможете выполнять команды в удаленной системе.

Выводы

В этой статье мы рассмотрели примеры использования telnet, а также что представляет из себя эта утилита, хотя она уже не используется по своему основному назначению, но до сих пор может быть полезной многим пользователям и системным администраторам. Если у вас остались вопросы, спрашивайте в комментариях!