Введение в SSH: что такое SSH?
SSH (также известный как Secure Shell) – это криптографический сетевой протокол для работы сетевых служб в незащищенной сети. По сути, SSH обеспечивает зашифрованный безопасный канал между вами и сервером без необходимости в безопасной сети.
Стандартным портом, используемым для SSH, является TCP-порт 22, а SSH обычно используется для входа на удаленный компьютер, такой как сервер или Raspberry Pi. Но с помощью SSH вы можете выполнять различные другие задачи, такие как туннелирование, переадресация портов TCP и соединения X11. Вы также можете передавать файлы через протокол передачи файлов SSH (SFTP) или через безопасное копирование (SCP). Для передачи файлов моей полезной утилитой является WinSCP.
Мой личный любимый клиент для удаленных сессий SSH в среде Windows – это PuTTY, один из наиболее полнофункциональных клиентов SSH и telnet, созданный для Windows. PuTTY – отличный SSH-клиент для Windows, который легко установить.
Ansible
Установим :
После этого надо добавить адреса серверов в файл .
Вот пример фрагмента подобного файла с несколькими системами, объединёнными в группу :
Теперь, для того, чтобы получить сведения команды и узнать, какие пользователи подключены к хостам, входящим в группу , можно воспользоваться следующей конструкцией:
Здесь опция используется для указания аргументов, передаваемых модулю, а флаг позволяет задать имя пользователя по умолчанию, применяемое для подключения к удалённым серверам по SSH.
Обратите внимание на то, что интерфейс командной строки позволяет выполнять команды лишь по одной
Взаимодействие с несколькими серверами средствами ansible
Команды для управления правами на файлы и директории
Все, что нужно для разрешения проблем, связанных с правами в Linux.
- sudo — выдает права суперпользователя. Используется перед любой другой командой в терминале, если нужно выполнить ее от имени администратора. Многие программы и операции запускаются исключительно при наличии этих прав, так что sudo используется часто. Например, чтобы обновить список пакетов в Ubuntu, введем: sudo apt-get update. При этом система запросит пароль администратора.
- sudo su — переводит терминал в режим суперпользователя. В нем каждая введенная команда будет восприниматься системой так, будто перед ней ввели sudo. Помогает запускать несколько скриптов и утилит, требующих права администратора, без необходимости постоянно корректировать их или вводить пароль от учетной записи.
- sudo gksudo — используется для запуска графических утилит от имени администратора. В Windows для этого есть специальная кнопка в контекстном меню, а в Linux — префикс. Синтаксис такой:
sudo gksudo название приложения, нуждающееся в запуске от имени администратора
- sudo !! — запускает предыдущую команду от имени администратора. Используется, если до этого была неудачная попытка запустить программу. Помогает не тратить время на повторный ввод большого количества символов.
- chmod — корректирует права доступа к выбранному файлу. Применяется исключительно с набором аргументов, обозначающих список прав. Допустим, я хочу выдать права на чтение и запись файла Timeweb.html на рабочем столе. Для этого введу в терминал: chmod 777 ~/Desktop/timeweb.html. Теперь его можно открывать и редактировать. Аналогичным образом пользователи поступают с системными файлами, когда приходит время что-то в них менять. По умолчанию большая их часть защищена от записи.
- chown — назначает владельца для выбранной директории, документа, картинки или любого другого элемента в файловой системе. Синтаксис следующий:
chown имя учетной записи, которому надо передать права путь до файла, права на который нужно передать
Работа с текстом
Парочка полезных команд для взаимодействия с любыми видами текстов на сервере через SSH.
cat — показывает текст из выбранного файла. В качестве аргумента передаем этой утилите текстовый документ, и cat выведет в консоль его содержимое. Синтаксис:
cat путь до файла, содержимое которого надо осмотреть
Чтобы взглянуть на содержимое файла timeweb.txt, который лежит на рабочем столе, напишем в терминал:
cat ~/Desktop/timeweb.txt
head — это «голова». Она работает по схожему с cat принципу. Отображает текст из файлов, где он имеется. Разница заключается в количестве отображаемого контента. Пользователь сам выбирает, сколько строчек текста вывести на экран, поставив аргумент -n. Команда head -n 4 ~/Documents/timeweb.txt покажет только первые четыре строки документа timeweb.txt из папки Documents.
tail — это «хвост». Работает, как head, но с противоположной стороны. Команда tail -n 8 ~/Documents/timeweb.txt покажет только первые восемь строк документа timeweb.txt из папки Documents.
touch — одна из множества команд для SSH, которую используют не по назначению. У нее весьма специфичная задача по изменению времени последнего открытия отдельных элементов файловой системы. Но ее быстро перепрофилировали чуть ли не в стандартный метод создания файлов. touch ~/Desktop/timeweb.html создаст HTML-документ с именем Timeweb на рабочем столе.
vi — используя с дополнительными аргументами, можно создавать новые текстовые файлы. Например vi /путь до директории, где нужно создать новый текстовый файл/. Или же редактировать уже существующие. Чтобы изменить содержимое какого-нибудь файла в домашней папке, надо ввести: vi /home/имя учетной записи/kakoy-to-tekstoviy-file.txt. Альтернативой vi может служить nano. Более современный и лояльный к новичкам редактор. К сожалению, может отсутствовать в системе по умолчанию и требовать установки.
wc путь до файла — показывает количество символов, количество строк и слов в выбранном текстовом документе.
grep — ищет конкретный кусочек текста в большом документе или распечатке из консоли. Чтобы дать понять, как он работает, покажу пример. Буду искать слово «немного» в файле timeweb.txt, лежащем у меня на рабочем столе. Сделаю это одной командой cat ~/Desktop/timeweb.txt | grep немного. Перед grep я использовал cat, чтобы вывести содержимое документа в консоль, а потом отфильтровать.
diff — сравнивает два файла и наглядно показывает строки, в которых обнаружились различия. Синтаксис: diff название первого файла название второго файла. Это может выглядеть так:
diff timeweb-1.html timeweb-2.html
Запуск Apache 2.4 с модулем 1С внутри Docker контейнера
Про Apache и про Linux слышали, наверное, все. А вот про Docker пока нет, но он сильно набирает популярность последнее время и не зря. Поделюсь своим опытом и дам пошаговую инструкцию настройки веб-сервера Apache с модулем 1С внутри Docker контейнера на Linux хосте. При этом сам сервер 1С может находиться совсем на другой машине и на другой операционной системе
Это не важно, главное чтобы Apache смог достучаться до сервера 1С по TCP. В статье дам подробное пояснение по каждой используемой команде со ссылками на документацию по Docker, чтобы не создавалось ощущение непонятной магии
Также прилагаю git репозиторий с описанием всей конфигурации, можете попробовать развернуть у себя буквально за 10 минут.
Навигация и управление файловой системой
Команды, необходимые для перемещения и ориентирования в файловой системе сервера. А еще для перемещения, копирования и удаления файлов. В общем, все, что вы делали бы в файловом менеджере, но через терминал.
cd — отправляет вас в любую папку на выбор. Синтаксис: cd путь до нужной директории. Если хочется на рабочий стол, то пишем: cd ~/Desktop. Вернуться в предыдущую папку? cd-. Перепрыгнуть в home? Просто вводим: cd без аргументов.
ls — отображает директории и файлы вокруг вас. То есть в той папке, где вы находитесь на текущий момент. Но чтобы ею пользоваться, необязательно переходить в конкретную директорию. Ее можно указать заранее. Вот так:
ls ~/Desktop/papka-testovaya
pwd — укажет путь до папки тем, кто заблудился. Если вы находитесь в папке Документы, то вывод pwd будет выглядеть вот так /home/имя пользователя/Documents. И так для любого каталога, в котором вы окажетесь.
file — покажет, что собой представляет файл. Фишка утилиты в том, что она демонстрирует разную информацию для разных типов файлов. К примеру, может дать подробные EXIF-данные для фотографий, включая разрешение и битность изображения.
mv — изначально использовалась для того, чтобы перемещать файлы из одного места в другое. mv ~/Desktop/timeweb.html ~/Documents переносит HTML-документ Timeweb с рабочего стола в документы. Но пользователи приноровились использовать mv для смены имени файлов. mv ~/Desktop/timeweb.html timeweb-2.html оставляет документ на месте, но меняет его название.
cp — создает копию выбранного файла в другом каталоге. cp ~/Documents/timeweb-file.txt /home/Webmaster/Desktop копирует документ с названием timeweb-file.txt на рабочий стол того же пользователя.
dd — управляет разделами. С ее помощью можно делать копии разделов: dd if=/dev/sda of=/dev/sdb. Можно перемещать разделы. Удалять их без возможности восстановления: dd if=/dev/zero of=/dev/sdX (в качестве раздела для «уничтожения» тут указана флешка). Копирование разделов подразумевает их запись на сторонние носители. Например, запись iso-образов на внешние накопители: dd if=~/Desktop/fedora-14.6.iso of=/dev/sdX bs=4M. if здесь — это путь к образу, а of — путь к смонтированному разделу (флешке).
rm — удаляет папки и все, что сможет в них найти. «Уничтожает» все субдиректории, документы, картинки, медиа. Вообще все, без возможности восстановления. Синтаксис:
rm путь до каталога, который надо вычистить вместе со всеми «внутренностями»
mkdir — создает новую папку. Синтаксис: mkdir путь_до каталога,_где_нужно_создать_новую_директорию название_для_этой директории. Если надо сделать на рабочем столе папку Timeweb, то пишем:
mkdir ~/Desktop/Timeweb
rmdir — удаляет директории. Не имеет права трогать их содержимое, поэтому отзовется ошибкой, если в удаляемой папке найдутся еще какие-то элементы. Перед использованием rmdir объект надо очистить.
wget — скачивает файл из переданной ссылки. Больше ничего не умеет. Простой текстовый менеджер загрузок. Работает так – если мы хотим загрузить скриншот панели управления Timeweb с официального сайта, то введем в терминал: wget https://timeweb.com/upload/resize_cache/iblock/b56/400_400_2/xscreen_3.jpg.pagespeed.ic.O4a5jdlo5A.jpg
zip — архивирует один или несколько файлов один файл в формате .zip. Синтаксис: zip название архива.zip путь до файла, который надо упаковать. К примеру:
zip noviy-archive.zip /home/me/soderzhimoe-archiva.txt
unzip — вытаскивает содержимое архива наружу. Работает по тому же принципу: сначала команда, потом путь до архива, который надо распаковать. Еще можно добавить опцию -d, чтобы удалить файлы из архива по завершении распаковки.
find — ищет файлы и папки по всей файловой системе. Умеет находить их по названию и по типу, но это зависит от выставленных опций. find -type d -name Timeweb будет искать только директории с именем Timeweb.
mount — монтирует образ или раздел диска. Синтаксис:
mount путь до раздела, что нужно смонтировать
unmount — «демонтирует» образ или указанный раздел. Синтаксис:
unmount путь до раздела, что нужно отмонтировать
Настройка Samba в Ubuntu 16.04
Ставим Samba и если у кого нет — пакет gksu, для возможности запуска окна настроек Samba:
sudo apt install samba system-config-samba gksu
Теперь переходим к настройке сервера
Создаём резервную копию оригинального файла конфигурации Samba:
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
После этого, создаём свой файл конфигурации:
sudo gedit /etc/samba/smb.conf
Указываем глобальные настройки файлового сервера.
Копируем в файл эти строки:
workgroup = WORKGROUP server string = Samba Server %v netbios name = SambaSrv security = user map to guest = bad user name resolve order = bcast host wins support = no dns proxy = no
Что мы скопировали?
А вот что:
workgroup - рабочая группа, в которой находятся все наши машины server string - строка коментария, где %v - это макрос, который будет заменён на версию Самбы netbios name - имя Самба-сервера, которое будет отображаться в Windows security - по умолчанию выполнять аутентификацию на уровне пользователя map to guest - это инструкция демону, которая сообщает, что делать с запросами. bad user - означает, что запросы с неправильным паролем будут отклонены, если такое имя пользователя существует name resolve order - очередность разрешения IP адресов по NetBIOS имени. bcast - означает отправить в локальную сеть широковещательный запрос. Если все компьютеры между которыми планируется взаимодействие находятся в одной сети этот вариант оптимальный. wins support - не устанавливайте этот параметр в yes если у вас нет нескольких подсетей и вы не хотите, чтобы ваш nmbd работал как WINS сервер
Сохраняем изменения.
Теперь даём общий доступ к папке в Ubuntu, чтобы машины с Windows могли ею пользоваться.
Общий доступ к папке в Ubuntu
Создаём папку, к которой будем открывать доступ для всех:
sudo mkdir -p /samba/obmen
Ключ -p разрешает создавать вложенные папки.
~ — создать каталоги в домашней папке пользователя
После того как папка создана, нужно сделать для нее правильные права доступа. Следующие команды разрешают доступ к папке для всех и делают владельцем nobody:
cd /samba sudo chmod -R 0755 obmen sudo chown -R nobody:nogroup obmen/
Внесём изменения в файл настройки samba, добавив следующий раздел:
path = /samba/obmen browsable = yes writable = yes guest ok = yes read only = no
Теперь ваш конфигурационный файл должен выглядеть вот так:
workgroup = WORKGROUP server string = Samba Server %v netbios name = SambaSrv security = user map to guest = bad user name resolve order = bcast host dns proxy = no path = /samba/obmen browsable =yes writable = yes guest ok = yes read only = no
Чтобы применить изменения, перезапустите сервер Samba:
sudo service smbd restart
С анонимным доступом к общему ресурсу мы закончили.
Теперь можем проверить доступность этой папки в Windows-машине.
Нажимаем Win+R и в адресной строке пишем:
Скрин показывает, что доступ получен, и получен он без вводи логин и пароля, то есть анонимно.
Защищенный общий доступ к папке Ubuntu
Чтобы расшарить папку для Windows в Ubuntu, к которой будут иметь доступ только пользователи из определенной группы, создадим отдельную папку и опишем ее в файле настройки Samba в Ubuntu.
Создаем папку:
sudo mkdir -p /samba/obmen/sec
Устанавливаем права, чтобы доступ к папке получали только пользователи из группы securedgroup.
Создаем группу:
sudo addgroup securedgroup
Настраиваем права:
cd /samba/obmen sudo chmod -R 0770 sec/ sudo chown -R alex:securedgroup sec
Добавляем настройки в конфигурационный файл samba
Открываем конфигурационный файл
sudo gedit /etc/samba/smb.conf
И добавляем в него этот блок:
path = /samba/obmen/sec valid users = @securedgroup guest ok = no writable = yes browsable = yes
Перезапускаем сервер Samba.
Теперь доступ к общей папке в Ubuntu могут получить только пользователи группы securegroup.
Чтобы проверить как это работает добавим пользователя alex в нашу группу:
sudo usermod -a -G securedgroup alex
Чтобы пользователь мог работать с расшаренными папками в Ubuntu, он должен быть в базе данных Samba.
Создаём для него пароль Samba:
sudo smbpasswd -a alex
После ввода команды будет предложено ввести новый пароль.
Для применения изменений перезагружаем файловый сервер.
Для того, чтобы доступ к папке мог получить только определённый пользователь, заменяем @securedgroup на имя пользователя.
Вот и всё
10 октября 2016, 18:32
Александр
Linux
13349
Из этой категории
Установка LAMP-сервера и phpMyAdmin в Debian 10Установка XAMPP в Debian 10 (Ubuntu) LinuxОтключить пароль SUDO в LinuxBash-команды для экономии времениУстанавливаем Brackets в Debian 10Работа с пакетами при помощи dpkgНастройка Linux Debian 10Скачиваем сайты целиком — утилита wget15 специальных символов-команд, которые нужно знать для работы в Bash Linux42 команды Linux
Команды Linux, для работы с файлами
Эти команды используются для обработки файлов и каталогов.
33. ls
Очень простая, но мощная команда, используемая для отображения файлов и каталогов. По умолчанию команда ls отобразит содержимое текущего каталога.
34. pwd
Linux pwd — это команда для показывает имя текущего рабочего каталога. Когда мы теряемся в каталогах, мы всегда можем показать, где мы находимся.
Пример ример ниже:
35. mkdir
В Linux мы можем использовать команду mkdir для создания каталога.
По умолчанию, запустив mkdir без какой-либо опции, он создаст каталог в текущем каталоге.
36. cat
Мы используем команду cat в основном для просмотра содержимого, объединения и перенаправления выходных файлов. Самый простой способ использовать cat— это просто ввести » имя_файла cat’.
В следующих примерах команды cat отобразится имя дистрибутива Linux и версия, которая в настоящее время установлена на сервере.
37. rm
Когда файл больше не нужен, мы можем удалить его, чтобы сэкономить место. В системе Linux мы можем использовать для этого команду rm.
38. cp
Команда Cp используется в Linux для создания копий файлов и каталогов.
Следующая команда скопирует файл ‘myfile.txt» из текущего каталога в «/home/linkedin/office«.
39. mv
Когда вы хотите переместить файлы из одного места в другое и не хотите их дублировать, требуется использовать команду mv. Подробнее можно прочитать ЗДЕСЬ.
40.cd
Команда Cd используется для изменения текущего рабочего каталога пользователя в Linux и других Unix-подобных операционных системах.
41. Ln
Символическая ссылка или программная ссылка — это особый тип файла, который содержит ссылку, указывающую на другой файл или каталог. Команда ln используется для создания символических ссылок.
Команда Ln использует следующий синтаксис:
42. touch
Команда Touch используется в Linux для изменения времени доступа к файлам и их модификации. Мы можем использовать команду touch для создания пустого файла.
44. head
Команда head используется для печати первых нескольких строк текстового файла. По умолчанию команда head выводит первые 10 строк каждого файла.
45. tail
Как вы, возможно, знаете, команда cat используется для отображения всего содержимого файла с помощью стандартного ввода. Но в некоторых случаях нам приходится отображать часть файла. По умолчанию команда tail отображает последние десять строк.
46. gpg
GPG — это инструмент, используемый в Linux для безопасной связи. Он использует комбинацию двух ключей (криптография с симметричным ключом и открытым ключом) для шифрования файлов.
50. uniq
Uniq — это инструмент командной строки, используемый для создания отчетов и фильтрации повторяющихся строк из файла.
53. tee
Команда Linux tee используется для связывания и перенаправления задач, вы можете перенаправить вывод и/или ошибки в файл, и он не будет отображаться в терминале.
54. tr
Команда tr (translate) используется в Linux в основном для перевода и удаления символов. Его можно использовать для преобразования прописных букв в строчные, сжатия повторяющихся символов и удаления символов.
Копирование числовых ячеек из 1С в Excel Промо
Решение проблемы, когда значения скопированных ячеек из табличных документов 1С в Excel воспринимаются последним как текст, т.е. без дополнительного форматирования значений невозможно применить арифметические операции. Поводом для публикации послужило понимание того, что целое предприятие с более сотней активных пользователей уже на протяжении года мучилось с такой, казалось бы на первый взгляд, тривиальной проблемой. Варианты решения, предложенные специалистами helpdesk, обслуживающими данное предприятие, а так же многочисленные обсуждения на форумах, только подтвердили убеждение в необходимости описания способа, который позволил мне качественно и быстро справиться с ситуацией.
Решение с GNU Parallel
Ниже перевод введения из мануала к утилите:
GNU Parallel — утилита командной строки для параллельного запуска задач на одном или нескольких компьютерах. Задача в данном контексте — это одна команда или скрипт, который должен быть запущен для каждого входящего аргумента. Типичный набор аргументов — это список файлов, хостов, пользователей, урлов или таблиц. Аргументы также могут быть переданы через пайп. GNU parallel может разделить аргументы и параллельно передать их командам.
Если вы используете xargs, то вы легко сможете использовать parallel, так как эта утилита поддерживает те же аргументы командной строки что и xargs. Если вы используете циклы в шелл-скриптах, то, вероятно, parallel поможет вам избавиться от них и ускорить выполнение за счет параллельного запуска команд.
GNU parallel возаращает результаты выполнения команд в том же порядке как если бы они были запущены последовательно. Это делает возможным использование результатов работы parallel как входных данных для других программ.
Для каждой входящей строки GNU parallel запустит команду и передаст ей эту строку в качетсве аргументов. Если команда не задана, то входящая строка будет исполнена. Несколько строк будут выполнены одновременно. GNU parallel может быть использована как замена для xargs и cat | bash.
У этой утилиты как минмум 2 видимых преимущества перед xargs:
- она позволяет запускать команды не в рамках одного сервера, а сразу на нескольких,
- руководство обещает, что результаты будут выводиться последовательно.
Испытаем. Поверим обещаниям того, что принимает те же аргументы, что и и просто заменим имя одной утилиты на другую в команде, которую использовали ранее:
time echo {1..20} | parallel -n 1 -P 4 ./do-something.sh -x 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 real 0m0.562s user 0m0.135s sys 0m0.096s
Результат 4
Работает! Команда выполнилась примено за те же 0,5 секунд, что и и результат возвращен в правильной последовательности.
Теперь попробуем вернуть обратно случайную задержку, зменим в скрипте do-something.sh на и запустим еще раз. Результат будет возвращен опять в правильной последовательности, несмотря на то, что из-за разной задержки команды запущенные позже могут быть выполнены раньше предыдущих команд (это хорошо видно во втором результате выше).
Единственным недостатком является то, что возвращает результаты как только они готовы, а — только тогда когда выполнение всех команд завершено. Но это цена, которую приходится платить за корректную последовательность результатов. Если запустить с аргументом , то во время работы будет выводиться прогресс бар, показывающий процент выполненных команд.
Теперь испытаем еще одну киллер-фичу — возможность запустить команду на нескольких серверах сразу. Для этого воспользуемся примером из доки: .
# Добавим список серверов в конфиг. В моем случае сервера имеют имена dev и test (echo dev; echo test) > .parallel/my_cluster # Убедимся, что существует файл .ssh/config и забэкапим его touch .ssh/config cp .ssh/config .ssh/config.backup # Временно отключим StrictHostKeyChecking (echo 'Host *'; echo StrictHostKeyChecking no) >> .ssh/config parallel --slf my_cluster --nonall true # Откатываем назад изменения StrictHostKeyChecking в конфиге SSH mv .ssh/config.backup .ssh/config
Теперь сервера из файла добавлены в .
Наконец, нужно скопировать скрипт do-something.sh в домашнюю директорию текущего пользователя на удаленных серверах (в моем примере test и dev).
После выполненной подготовки мы можем запустить команду на серверах и добавив к вызову parallel опцию .
Попробуем:
time echo {1..3200} | parallel -n 1 -P 4 --sshlogin test,dev ./do-something.sh -x real 0m0.334s user 0m0.080s sys 0m0.032s
Результат 5
Виден выигрыш в скорости даже на такой элементарной операции, несмотря на оверхед связанный с установкой соединения по сети. В случае с действительно тяжелыми командами, выполнение которых может занимать десятки секунд или минут, выигрыш от такого распределенного выполнения может оказаться еще заметнее.
pdsh
PDSH — высокопроизводительная, распараллеленная оболочка (по крайней мере так говорится на . Для доступа к серверам использует либо rsh, либо ssh, что предпочтительней. А так же использует модули расширения, которых мы касаться не будем. Установка, думаю, проблем не вызовет:
$ sudo apt-get install pdsh -y $ yum install pdsh -y
Синтаксис программы прост:
pdsh -w host,host,... command
Решаем задачу # 2, а по ходу разбираемся:
$ pdsh -w root@192.168.0.1,root@192.168.0.2,root@192.168.0.3,root@192.168.4.44,root@192.168.0.5,root@192.168.0.6,root@192.168.0.7,root@192.168.8.88 uptime
192.168.0.6: 23:53:42 up 15:30, 4 users, load average: 0.18, 0.24, 0.34
192.168.0.3: 23:53:42 up 15:09, 4 users, load average: 0.18, 0.24, 0.24
192.168.4.44: 23:53:42 up 17:11, 4 users, load average: 0.18, 0.24, 0.28
192.168.0.5: 23:53:42 up 15:09, 4 users, load average: 0.18, 0.21, 0.27
192.168.0.7: 23:53:42 up 15:09, 4 users, load average: 0.11, 0.24, 0.26
192.168.8.88: 23:53:42 up 23:54, 4 users, load average: 0.18, 0.24, 0.24
192.168.0.1: 23:53:42 up 15:09, 4 users, load average: 0.13, 0.24, 0.24
192.168.0.2: 23:53:42 up 10:09, 4 users, load average: 0.08, 0.11, 0.40
Вот и все, задача решена. Правда вывод мы получили вразнобой, так как задачи выполняются параллельно, и вывод происходит по мере поступления (в shmux проблема решена). Но сама команда выглядит монструозной, не правда ли? Для решения этой проблемы у pdsh есть свой синтаксис, который отличается от синтаксиса bash из примера, думаю, будет понятно:
$ pdsh -w root@192.168.0.,root@192.168.8.88,root@192.168.4.44 uptime
Получилось немного короче. А когда серверов 50, разница будет потрясающая.
Если вывод многострочный, да еще и задерживается, мы получим кашу, то есть строки будут поступать на экран по мере формирования. Частично решить проблему можно такой конструкцией:
$ pdsh -w hosts command | sort -n
Если мы хотим выполнить некий скрипт на всех серверах содержащий спецсимволы «; & && | || » обязательно возьмите всю выполняемую команду в кавычки. В противном случае интерпретатор (bash) решит, что команда, выполняемая после спецсимвола, предназначена для локальной машины. Например:
$ pdsh -w hosts "i=~ ; rm -rf *$i"
Интересно, что сделает скрипт, если мы кавычки забудем?
В комплекте с pdsh есть утилита pdcp схожая по функционалу с scp. Решим с ее помощью задачу # 1: 1. Редактируем /etc/hosts 2. Копируем все файлы hosts на удаленные машины в папку /etc:
$ pdcp -w root@192.168.0.,root@192.168.8.88,root@192.168.4.44 /etc/hosts /etc/
Просто, да? Единственная трудность в том, что для этого pdsh должен быть установлен на всех машинах, но ведь теперь это не проблема:
$ pdsh -w root@192.168.0.,root@192.168.8.88,root@192.168.4.44 yum install pdsh -y
А можно все это еще ускорить или упростить? Можно и нужно, последняя ступень просвещения и выход на космические скорости.
Ректальное администрирование: Основы для практикующих системных АДминистраторов
Одной из самых популярных и зарекомендовавших себя методологий системного администрирования является так называемое ректальное. Редкий случай сопровождения и обслуживания информационных систем, инфраструктуры организации обходится без его использования. Зачастую без знания данной методологии сисадминам даже бывает сложно найти работу в сфере ИТ, потому что работодатели, особенно всякие аутсорсинговые ИТ фирмы, в основном отдают предпочтение классическим, зарекомендовавшим себя методикам, а не новомодным заграничным веяниям: практикам ITIL, нормальным ITSM и прочей ерунде.
Переключение на суперпользователя
Еще раз уточню, что команда sudo идеально подходит для получения необходимых привилегий без переключения учетной записи. Ее можно использовать как для выполнения одного действия, так и нескольких. Если вы желаете временно получить рут-права через эту команду, введите sudo -s или sudo -i. В первом случае домашний каталог остается текущим, а во втором меняется на /root.
Примерно так же работает и команда su, но она обладает дополнительными аргументами, которые следует уточнить:
- -c – позволяет выполнить команду;
- -g – устанавливает группу для пользователя;
- -G – дополнительные группы для юзера;
- -, -l, —login – один из режимов входа, при котором происходит переключение домашнего каталога;
- -p – сохранение переменных окружения;
- -s – выбор оболочки для выхода.
Есть вариант выполнить вход в оболочку под суперпользователем, но он имеет свои неудобства. Он заключается в переключении в доступную виртуальную консоль, что осуществляется комбинацией Ctrl + Alt + F1-F6. Там понадобится ввести логин и пароль root для получения доступа. Главный недостаток этого метода – потеря возможности взаимодействия с графическим интерфейсом операционной системы.
Второй вариант – ввод такого же логина и пароля при входе через графическую форму авторизации. Так вы сразу получите доступ ко всем файлам, даже не надо будет вводить sudo. Однако неопытным пользователям такой метод не подходит, поскольку возникает риск удаления или изменения системных файлов, что иногда приводит к поломке ОС.
Вы уже сами решайте, какой вариант хотите использовать, и готовы ли смириться со всеми ограничениями и недостатками, которые накладывает каждый из них.
Рассказываем роутеру про сервер
Теперь наш сервер знает, что мы имеем дело с постоянным ip и не используем протокол DHCP. Самое время рассказать роутеру, что внешние запросы нужно отправлять на сервер. Чтобы получить доступ к настройкам роутера вбиваем в поисковую строку его ip адрес.
Есть два варианта:
-
Установить DMZ зону внутри настроек роутера и указать туда локальный адрес нашего сервера. Этим действием мы делаем наш сервер публичным и теперь любой может попробовать подключиться к нему.
-
Пробросить порты нужных нам ресурсов через роутер на сервер (перенаправление портов). Не забудьте порт SSH (22) и flask (5000)
Попробуйте пингануть его из внешней сети.
Все норм? Теперь наш сервер виден из вне, самое время подумать о безопасности.
Подключение к компьютерам с Windows через RDP
Самый распространенный способ подключения к удаленному компьютеру с Windows — через RDP (протокол удаленного рабочего стола). Протокол RDP встроен в операционную систему Windows. Таким образом, вам не нужно ничего устанавливать на удаленном компьютере с Windows, чтобы RDP работал. Все, что вам нужно сделать, это включить RDP на удаленном компьютере, и все готово.
Чтобы включить RDP в Windows 10, откройте приложение » Настройки Windows 10″ и нажмите » Система», как показано на снимке экрана ниже.
Перейдите в раздел » Удаленный рабочий стол » и нажмите кнопку- переключатель » Включить удаленный рабочий стол», как показано на снимке экрана ниже.
Нажмите Подтвердить, как показано на скриншоте ниже.
RDP должен быть включен.
После включения RDP на удаленном компьютере с Windows вам необходимо знать IP-адрес удаленного компьютера с Windows.
Чтобы найти IP — адрес удаленной машины Windows, нажмите < Windows, ключ> и нажмите R. Должно появиться окно с приглашением Выполнить. Теперь введите powershell или cmd и нажмите < Enter >.
Должен быть открыт терминал (PowerShell или CMD, в зависимости от команды, которую вы использовали для запуска терминала).
Теперь выполните следующую команду:
Должен отображаться IP-адрес удаленного компьютера с Windows. В моем случае IP-адрес 192.168.0.107. Для вас все будет иначе. Поэтому обязательно используйте свой уникальный IP-адрес.
Узнав IP-адрес компьютера с Windows, вы можете использовать RDP-клиент для подключения к удаленному компьютеру с Windows из Linux. В Linux доступно множество клиентов RDP. В этой статье я буду использовать Vinagre клиент удаленного рабочего стола для подключения к компьютеру Windows, с помощью RDP.
Если вы не имеют Vinagre установлен клиент удаленного рабочего стола на компьютере, и если вам нужна помощь с установкой Vinagre клиента удаленного рабочего стола на вашем желаемом распределении Linux, вы можете проверить статью Как установить Vinagre Remote Desktop Client на Linux.
После того, как вы установили Vinagre, вы можете запустить его из меню приложений вашего компьютера.
Чтобы запустить Vinagre, откройте меню приложений и найдите Vinagre и щелкните значок средства просмотра удаленного рабочего стола, как показано на снимке экрана ниже.
Клиент удаленного рабочего стола Vinagre должен быть открыт.
Теперь нажмите » Подключиться».
Выберите RDP в раскрывающемся меню » Протокол», введите IP-адрес вашего компьютера с Windows в разделе » Хост » и введите ширину и высоту дисплея в пикселях в разделе » Параметры RDP «, как показано на снимке экрана ниже.
Затем нажмите «Подключиться».
Вам будет предложено ввести имя пользователя и пароль для входа на компьютер Windows, к которому вы подключаетесь.
Введите имя пользователя и пароль для входа и нажмите » Аутентифицировать».
Вы должны быть подключены к компьютеру с Windows, как вы можете видеть на скриншоте ниже.