Архив рубрики: Linux

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

Сравнение строк в Bash

При написании сценариев на Bash не только опытные программисты, но и новички в области командного интерпретатора Bash сталкиваются с работой со строками. Наиболее часто это необходимо при считывании команд, вводимых пользователем в качестве аргументов для исполняемого сценария, а также при обработке текстовых файлов. И один из необходимых приёмов в таком случае — это сравнение строк.

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

Сравнение строк Bash

Данные операции позволяют определить, являются ли сравниваемые строки одинаковыми:

  • = - равно, например if [ "$x" = "$y" ]
  • == - синоним оператора "=", например  if [ "$x" == "$y" ]
  • != - не равно, например if [ "$x" != "$y" ]

Пример:

#!/bin/bash
testuser=anton
if [ $USER = $testuser ]
then
echo "Добро пожаловать, $testuser"
fi

Результат работы сценария:

При проверке на равенство с помощью команды test (синоним квадратным скобкам [ ]) учитываются все пунктуационные знаки и различия в регистре букв сравниваемых строк.

Некоторые особенности сравнения строк с шаблонами:

# возвращает истину, если строка, содержащаяся в $x, начинается с символа "y"
[[ $x == y* ]]
# возвращает истину, если строка из $x равна конкретно двум символам "y*"
[[ $x == "y*" ]]
# возвращает истину, если $x содержит название файла, содержащегося в текущем каталоге, которое начинается с "y"
[ $x == y* ]
# возвращает истину, если строка $x равна двум символам "y*"
[ "$x" == "y*" ]

Например проверка строки bash на то, начинается ли она с символа y:

#!/bin/bash
x=yandex
[[ $x == y* ]]
echo $?

Результат выполнения кода:

Сценарий вывел 0 (ноль), так как мы потребовали вывести код ошибки последней выполненной инструкции. А код 0 означает, что сценарий выполнился без ошибок. И действительно — переменная $x содержит строку yandex, которая начинается с символа "y". В противном случае может писаться "1". Это довольно удобный способ отладки сценариев.

Сравнение строк по алфавиту на Bash

Задача усложняется при попытке определить, является ли строка предшественницей другой строки в последовательности сортировки по возрастанию. Люди, пишущие сценарии на языке командного интерпретатора bash, нередко сталкиваются с двумя проблемами, касающимися операций "больше" и "меньше" относительно сравнения строк Linux, у которых достаточно простые решения:

Во-первых, символы "больше" и "меньше" нужно экранировать, добавив перед ними обратный слэш (\), потому что в противном случае в командном интерпретаторе они будут расцениваться как символы перенаправления, а строки — как имена файлов. Это один из тех случаев, когда отследить ошибку достаточно сложно.

Пример:

#!/bin/bash
# неправильное использование операторов сравнения строк
val1=baseball
val2=hockey
if [ $val1 > $val2 ]
then
echo "$val1 больше, чем $val2"
else
echo "$val1 меньше, чем $val2"
fi

Что получится, если сравнить строки bash:

Как видно, один лишь символ "больше" в своём непосредственном виде привёл к неправильным результатам, хотя и не было сформировано никаких ошибок. В данном случае этот символ привёл к перенаправлению потока вывода, поэтому никаких синтаксических ошибок не было обнаружено и, как результат, был создан файл с именем hockey:

Для устранения этой ошибки нужно экранировать символ ">", чтобы условие выглядело следующим образом:

...
if [ $val1 \> $val2 ]
...

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

Во-вторых, упорядочиваемые с помощью операторов "больше" и "меньше" строки располагаются иначе, чем это происходит с командой sort. Здесь проблемы сложнее поддаются распознаванию, и с ними вообще можно не столкнуться, если при сравнении не будет учитываться регистр букв. В команде sort и test сравнение происходит по разному:

#!/bin/bash
val1=Testing
val2=testing
if [ $val1 \> $val2 ]
then
echo "$val1 больше, чем $val2"
else
echo "$val1 меньше, чем $val2"
fi

Результат работы кода:

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

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

Проверка строки на пустое значение

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

#!/bin/bash
val1=testing
val2=''
# проверяет, не пустая ли строка
if [ -n $val1 ]
then
echo "Строка '$val1' не пустая"
else
echo "Строка '$val1' пустая"
fi
# проверяет, пустая ли строка
if [ -z $val2 ]
then
echo "Строка '$val2' пустая"
else
echo "Строка '$val2' не пустая"
fi
if [ -z $val3 ]
then
echo "Строка '$val3' пустая"
else
echo "Строка '$val3' не пустая"
fi

Результат работы кода:

В этом примере создаются две строковые переменные — val1 и val2. Операция -n определяет, имеет ли переменная val1 ненулевую длину, а -z проверяет val2 и val3 на нулевую. Примечательно то, что последняя не была определена до момента сравнения, но интерпретатор считает, что её длина всё же равна нулю. Такой нюанс следует учитывать при различных проверках сценариев. И, если нет уверенности в том, какое значение содержится в переменной и задано ли оно вообще, стоит проверить её с помощью оператора -n или -z и лишь затем использовать по назначению.

Стоит обратить внимание и на функцию -n. Если ей для проверки будет передана необъявленная или пустая переменная, будет возвращена истина, а не ложь. Для таких случаев следует заключать проверяемую строку (переменную) в двойные кавычки, чтобы выглядело это так:

...
if [ -n "$val1" ]
...

Выводы

В представленных операциях сравнения строк Bash есть определённые нюансы, которые стоит понять для предотвращения ошибок работы сценариев. Но таких ситуаций на практике встречает много, поэтому запомнить все (и тем более, описать) не получится.

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

Установка WhatsApp в Ubuntu

Фраза "What's Up?" в переводе с английского дословно означает "Как дела?". Так и есть, WhatsApp - это популярный мессенджер, который распространился благодаря своему удобству, скорости обмена сообщениями и бесплатности. Так как приложение предназначено в основном для мобильных платформ, то его установка потребует усилий.

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

Установка WoT на Linux

В данной статье мы разберём процесс установки World of Tanks на Linux. Эта игра разрабатывается компанией Wargaming. Поддерживаемые платформы: Windows, Xbox 360, Xbox One, PlayStation 4, MacOS. Да, данная игра до сих пор не обзавелась официальной поддержкой систем на базе ядра Linux.

Читать далее Установка WoT на Linux

Как запустить Kali Linux с флешки

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

Дистрибутив разрабатывается на базе Debian, первый официальный релиз Kali Linux состоялся 13 марта 2013 года. С тех пор разработчики внесли множество изменений в систему: был сделан упор на стабильность работы и функциональность дистрибутива, а также был "отфильтрован" и сам инструментарий. Дальше мы рассмотим как запустить kali linux с флешки.
Читать далее Как запустить Kali Linux с флешки

Шифрование файлов для облака в Cryptomator

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

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

Читать далее Шифрование файлов для облака в Cryptomator

Программа Pitivi

Новички, перешедшие на Linux, первым делом, задумаются о том, как монтировать видео. На kovalets.net уже есть одна статья, просвещённая программе OpenShot. В этой статье мы рассмотрим еще одну программу - PitiVi.

Читать далее Программа Pitivi

Создание загрузочной флешки Linux Mint

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

Из этой статьи вы узнаете, как создать загрузочную флешку с Linux Mint в различных операционных системах с помощью доступного для них софта и как разметить на этой флешке раздел постоянного хранилища для сохранения пользовательских файлов, опций ОС и установленных программ. В финальной части статьи мы кратко поговорим о настройке Linux Mint на флешке «под себя».
Читать далее Создание загрузочной флешки Linux Mint

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

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

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

Установка PuTTY

Сначала нужно скачать установщик программы. Для этого откройте официальный сайт и нажмите "You can download PuTTY here":

 

Затем выберите установщик для вашей архитектуры, x86 или x64 и загрузите его.

 

На первом шаге нажмите "Next":

Папку для установки можно оставить по умолчанию:

 

Компоненты тоже:

Дождитесь завершения установки:

Снимите галочку с "View README" и нажмите "Finish":

Теперь перейдем к тому как выполняется работа в PuTTY.

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

1. Интерфейс программы

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

Рассмотрим за что отвечают те или иные вкладки программы, чтобы вы ориентировались что и где искать. У нас есть четыре вкладки:

  • Session - отвечает за подключение удаленному серверу, тут мы вводим параметры подключения, порт, адрес, а также можем сохранить все настройки putty, чтобы не настраивать каждый раз заново.
  • Terminal - позволяет включать или отключать возможности терминала;
  • Window - настройка внешнего вида окна, цвет, шрифт, кодировка;
  • Connection - настройка параметров подключения, алгоритма шифрования, сжатия, ключей аутентификации, X11 и других параметров.

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

2. Подключение к удаленному компьютеру PuTTY

Чтобы подключиться к удаленному компьютеру по SSH перейдите на вкладку "Session", здесь, в поле "Host Name" необходимо прописать ip адрес или имя хоста, компьютера, к которому вы хотите подключиться, в поле порт - нужно указать порт, на котором запущен SSH сервер, по умолчанию используется порт 22:

 

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

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

Теперь авторизация прошла успешно, и вы можете выполнять нужные действия на сервере:

 

3. Сохранение сессии PuTTY

Чтобы не вводить каждый раз ip и порт можно сохранить эти данные в виде сессии, для этого пропишите новое имя в поле "Saved Sessions", а затем нажмите кнопку "Save":

Теперь вы сможете загрузить сохраненную сессию, нажав кнопку "Load".

После того как будет завершена настройка putty и все параметры будут выставлены правильно вы можете сохранить настройки и не вводить их несколько раз.

4. Имя пользователя по умолчанию

Вы можете не вводить имя пользователя каждый раз, для этого перейдите на влкадку "Connection", затем "Data" и в поле "Auto-login Username" пропишите имя пользователя, например, root:

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

5. Авторизация по ключу ssh в PuTTY

Чтобы не вводить каждый раз пароль можно настроить авторизацию по ключу. В Linux такая возможность используется очень широко потому что это удобно. Первым делом необходимо создать ключ. Для этого запустите утилиту PuTTYgen и установите переключатель в положение "SSH-2 RSA" нажмите "Generate":

Обязательно ключ должен быть SSH-2 RSA, если в главном окне нет, выберите в меню "Key". Подвигайте мышкой, чтобы создать достаточное количество энтропии:

Ключ готов, затем, с помощью кнопок "Save Public Key" и "Save Private Key" сохраните оба ключа.

Далее, откройте PuTTY, перейдите на вкладку "Connection", затем "SSH", затем "Auth":

Здесь необходимо нажать кнопку "Browse" и добавить недавно сохраненный приватный ключ:

Далее, возвращаемся на вкладку "Session", выбираем наше сохранение и нажимаем "Save" чтобы сохранить настройки. Осталось только отправить наш открытый ключ на сервер. Для этого авторизуйтесь на нем с помощью пароля и открытый ключ вставьте ключ в конец файла /root/.ssh/authorized_keys.

Ключ можно брать прямо из окна PuTTYgen "Public key for pasting" или из файла открытого ключа:

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

5. Передача файлов через scp в PuTTY

Не все знают, но PuTTY позволяет передавать файлы через ssh также как это делает linux с помощью утилиты scp. Нажмите Win+R, затем пропишите cmd, чтобы запустить командную строку.

 

Синтаксис утилиты pcsp выглядит следующим образом:

pscp опции путь_файлу имя_пользователя@хост:/путь/к/файлу/на/удаленном/хосте

Например, мы можем отправить файл из текущей папки в папку пользователя /root/:

pscp test.txt [email protected]:/root/

 

 

С помощью опции -P можно задать удаленный порт:

pscp -P 2250 test.txt [email protected]:/root/

А опция load позволяет загрузить сохраенные настройки сессии PuTTY:

pscp -load kovalets-2 test.txt [email protected]:/root/

Теперь вы знаете как использовать putty для передачи файлов.

Выводы

В этой статье мы рассмотрели как пользоваться PuTTY для решения задач администрирования Linux в Windows. Иногда случаются ситуации, что без ssh в windows никуда, тогда эта утилита будет просто незаменимой.

Не устанавливается Ubuntu

Многие новые пользователи, которые хотят попробовать Linux и установить его основной системой на свой компьютер, сталкиваются с проблемами во время установки. Поскольку самый популярный дистрибутив - Ubuntu, то и рассматривать будем его.

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

Почему Ubuntu не устанавливается

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

  • Установочный образ не загружается;
  • Система загрузилась в Live режиме, но во время установки возникает ошибка;
  • Установщик выдал сообщение, что Ubuntu установлена успешно, но после перезагрузки меню запуска не появилось.

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

  • Неверные настройки загрузочного диска в BIOS;
  • Образ записан неправильно - если во время записи образа произошел какой-либо сбой, то не удивительно что он загружается;
  • Несовместимость драйвера - стандартный драйвер может быть несовместим с вашей видоекартой, такое иногда случается с картами NVIDIA;
  • Проблемы со старыми ноутбуками от Dell на этапе сканирования устройств PCMCIA;
  • Ошибки на этапе установщика ubiquity самые непонятные, обычно они вызваны несовместимостью оборудования;
  • Отсутствие загрузочного меню может означать что загрузчик Grub не был установлен или был установлен не на тот диск.

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

Что делать если не устанавливается Ubuntu

1. Настройка BIOS

Первое, что необходимо проверить - это какое загрузочное устройство установлено для загрузки в BIOS, на вкладке "Boot". Там должна быть ваша флешка или DVD диск.

Второе, это режим загрузки, UEFI или BIOS. В принципе, образ должен успешно загружаться независимо от того какой способ вы используете, но если на этапе установки возникают какие-либо ошибки, то, возможно, лучше отключить UEFI и использовать Legasy BIOS, обычно, эта функция тоже находится на вкладке "Boot".

 

Следующий пункт, на который стоит обратить внимание в BIOS - это способ подключения жесткого диска - "SATA Mode", которую можно найти на вкладке "Main", сейчас по умолчанию используется значение "IDE", но если что-то не работает, можно попробовать изменить на "ACHI".

2. Целостность установочного диска

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

В Linux для подсчета контрольной суммы можно использовать утилиту md5sum:

md5sum ubuntu-17.10.1-desktop-amd64.iso

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

Следующий момент - это проверка правильности записи диска. Для этого можно использовать встроенную в сам образ утилиту проверки. Если BIOS настроена правильно и образ записан, то после перезагрузки компьютера вы увидите такое меню:

Здесь нужно выбрать "Check installation media":

Утилита проверит все поставляемые пакеты и если все будет хорошо, то выдаст сообщение:

 

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

3. Проблема с драйверами NVIDIA

Свободный графический драйвер nouveau совместим с большинство карт NVIDIA, но в некоторых случаях с этим драйвером операционная система не запускается и вы будете видеть только черный или фиолетовый экран. Чтобы все-таки обойти проблему не устанавливается Ubuntu 16.04 или другая версия, нужно использовать опцию nomodeset. Для этого в меню загрузки образа нажмите кнопку F6:

Затем выберите в открывшемся списке "nomodeset" и нажмите "Enter". Система должна загрузиться нормально. Если проблема не была решена можно попробовать еще использовать параметр ядра fb=false. Только его нужно прописать вручную после нажатия F6.

4. Зависание на этапе настройки PCMCIA

Некоторые старые ноутбуки от Dell могут зависать на этапе выполнения сканирования PCMCIA устройств. Если вам не нужны устройства PCMCIA во время установки то вы можете отключить эту возможность с помощью параметра ядра:

start_pcmcia=false

После установки вы можете настроить PCMCIA так, чтобы сканирование не вызывало таких проблем.

5. Система установлена но нет загрузчика

Во-первых, убедитесь, что тот диск, на который вы устанавливали загрузчик выбран первым загрузочным диском в BIOS. Если вы установили загрузчик на /dev/sda, а первым указан /dev/sdb, то будет загружаться загрузчик из /dev/sdb, а до вашего загрузчика дело так и не дойдет.

Второе, на что нужно обратить внимание - это UEFI. Если во время установки был включен режим UEFI, то загрузчик был установлен туда и вам просто нужно выбрать пункт Grub в обычном меню UEFI или настроить UEFI таким образом, чтобы Grub был на первом месте и запускался автоматически.

И последнее, это когда во время установки возникла ошибка установки загрузчика. Система установлена, а не хватает только загрузчика. Тогда можно загрузиться с LiveCD и просто установить его как описано в статье восстановление Grub2. Сначала примонтируйте раздел диска, куда была установлена Ubuntu к папке /mnt, например, /dev/sda1:

sudo mount /dev/sda1 /mnt

Если раздел /boot был вынесен отдельно, то его тоже надо примонтировать. Затем надо примонтировать папки с виртуальными файловыми системами:

sudo mount --bind /dev /mnt/dev
sudo mount --bind /sys /mnt/sys
sudo mount --bind /proc /mnt/proc

Затем переключаемся в окружение chroot нового дистрибутива:

chroot /mnt /bin/bash

Затем осталось установить загрузчик:

sudo grub-install /dev/sda

И генерировать конфигурационный файл:

sudo grub-mkconfig -o /boot/grub/grub.cfg

После этого осталось перезагрузить компьютер и выбрать Ubuntu в меню Grub.

6. Ошибки во время установки

Большинство из таких ошибок вызваны проблемами с оборудованием и лучшее что вы можете сделать в этом случае - это отправить разработчикам отчет о неполадках, если они решат что проблема серьезная, то исправят ее и такая ошибка установки ubuntu больше не будет повторяться. Или же вы можете попытаться спросить совета на форуме, может кто-то из пользователей уже сумел найти решение этой проблеме.

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

Выводы

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

Сброс пароля в Ubuntu

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

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