Cli что это: Cli (command line interface) — Национальная библиотека им. Н. Э. Баумана
Всё, что вы хотели знать о CLI, CGI, MOD, но стеснялись спросить / Хабр
… Я знаю кун-фу, каратэ, таэквондо и еще много страшных слов!
(с) анекдот
Меня начинающие админы последнее время стали часто спрашивать «А чем отличаются пакеты php-cgi, php-cli и mod_php? И почему, например, для Python есть mod_python, но нет python-cgi?»
Сначала было смешно, но потом стало ясно, что сей вопрос хоть раз да возникал у каждого, кто занимается администрированием LAMP(ссылка) и подобных серверов.
Статья написана по мотивам моей беседы с felvis, поэтому заранее извиняюсь за некоторую вольность изложения.
У каждого запущенного в системе процесса есть такая фигня, как окружение — environment — которое описывается переменными окружения. В Linux-подобных ситемах c установленным пакетом coreutils своё окружение можно посмотреть командой env
. Окружение произвольного процесса можно посмотреть через специальную файловую системы /proc
: cat /proc/$PID/environ (где $PID - идентификатор процесса в системе).
Ещё пример, вместо команды env можно выполнить cat /proc/self/environ
Увидите то же самое, только в менее удобочитаемом виде 🙂
Всё, теперь то что нам нужно для понимания отличий CGI и CLI мы знаем. Идём далее.
Для PHP имеем в системе следующие пакеты: mod_php, php-cgi и php_cli.
В чём разница?
mod_php — so-шка, которая дополнительно подтягивается при старте Апача. При обращении к php-скрипту из браузера скрипты выполняются с окружением процесса httpd.
php-cgi — дополнительно при старте Апача ничего не подтягивается и каждый раз при вызове
http://www.domain.com/script.php
правильно настроеный веб-сервер дёргает /usr/bin/php-cgi /path/to/script.php, форкается новый процесс и скрипт выполняется уже в окружении php-cgi (которое может сильно отличаться от окружения процесса httpd).
Общего у mod_php и php-cgi — то, что вызываются они веб-сервером.
Разное — то, что скрипты выполняются в разном окружении (например, можно настроить php-cgi так, что у него не будет доступа к определённым диреториям в системе, или вообще все скрипты пускались в чруте — вариантов море. Кстати, в общем случае php-cgi — более секьюрный способ обработки php-скриптов).
php-cli — этот бинарь в общем случае вызывается непосредственно юзером, когда есть необходимость выполнить php-скрипт из консоли. Соответственно окружение в котором скрипт выполняется — юзерское (то, которое через env видно).
Попробуйте выполнить такой скрипт из консоли и через браузер:
<?php print $_ENV['PWD'] ?>
* This source code was highlighted with Source Code Highlighter.
поймёте, что имеется ввиду.
Кстати, именно из-за вышеописанного один и тот же скрипт будет работать по-разному из консоли и через браузер. Разработчик, будь внимателен при отладке!
Теперь за Python. Почему есть mod_python, но нет python-cgi и python-cli?
Тут всё просто, проведём аналогию:
mod_php -> mod_python php-cli -> /usr/bin/python php-cgi - python с mod_cgi
Нужно отдельно пояснить, что CGI — это Common Gateway Interface для веб-серверов (не только Апача). То есть CGI — это лишь технология, с помощью которой можно выполнять что угодно, любые бинари, которые формируют веб-страницу (хоть программы на Си писаные — пофиг). В Апаче эту технологию реализует mod_cgi — через этот модуль Апач дёргает скрипт, в котором прописан shebang #!/usr/bin/python или #!/usr/bin/php и тд — и скрипт выполняется.
Основной недостаток mod_cgi — скорость выполнения скриптов, потому-то и пишут отдельные модули для Апача, которые интепретитруют PHP, Python, shell-скрипты — так быстрее.
Конечно есть mod_fcgi, который сильно быстрее mod_cgi — но описание mod_fcgi не входит в рамки этой статьи.
_________
Текст подготовлен в ХабраРедакторе
В тексте использована картинка Binary от Brian «Visual Paradox» Kissinger.
CLI — это… Что такое CLI?
идентификация вызывающей линии
Номер звонящего, предоставляемый телефонной компанией вызываемой стороне во время организации соединения. Используется также термин Caller ID.
[http://www.lexikon.ru/dict/net/index.html]
Тематики
- сети вычислительные
EN
- calling line identification
- CLI
интерфейс командной строки
Разновидность текстового интерфейса (CUI) между человеком и компьютером, в котором инструкции компьютеру даются в основном путём ввода с клавиатуры текстовых строк (команд), в UNIX-системах возможно применение мыши.
Также известен под названием консоль.
Интерфейс командной строки противопоставляется системам управления программой на основе меню, а также различным реализациям графического интерфейса.
[Википедия]
интерфейс «командная строка»
Интерфейс, позволяющий пользователям взаимодействовать с оборудованием за счет ввода команд с необязательными аргументами.
[http://www.iks-media.ru/glossary/index.html?glossid=2400324]
Параллельные тексты EN-RU
Enabling and Disabling Telnet Access Using the Command Line Interface (CLI)
[Schneider Electric]
Разрешение и запреn доступа через Telnet с помощью интерфейса командной строки.
[Перевод Интент]
Loading Settings from the Local Non-Volatile Memory Using the Command Line Interface
[Schneider Electric]
Загрузка настроек из локальной энергонезависимой памяти с помощью интерфейса командной строки
[Перевод Интент]
The command line interface adds the remaining letters for you.
[Schneider Electric]
Интерфейс командной строки введет оставшуюся часть слова.
[Перевод Интент]
Тематики
- информационные технологии в целом
EN
- CLI
- command interface
- command-line interface
прикладной программный интерфейс уровня вызовов
Коммуникационный интерфейс для обеспечения связи между различными базами данных.
[Л.Г.Суменко. Англо-русский словарь по информационным технологиям. М.: ГП ЦНИИС, 2003.]
Тематики
- информационные технологии в целом
EN
CLI — это… Что такое CLI?
CLI — Saltar a navegación, búsqueda Significados de CLI: Command line interface o en español Línea de comandos (interacción con una computadora, y en contraste a un GUI) Call Level Interface (un API de gestión de base de datos SQL) Common Language… … Wikipedia Español
cli — cli·na·men; cli·nan·dri·um; cli·ner; cli·ni·cian; … English syllables
CLI — may refer to: Computing Command line interface, sending commands to a computer by text typed into a command line interpreter (command line shell). Call Level Interface, an SQL database management API Common Language Infrastructure, a Microsoft… … Wikipedia
Cli — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. CLI, sigle composé des trois lettres C, L et I, est un acronyme pouvant signifier : Command line interface ou « Interface de ligne de… … Wikipédia en Français
CLI — [Abk. für Command Line Interface, dt. »Kommandozeilen Schnittstelle«] das, eine gewöhnlich vom Betriebssystem zur Verfügung gestellte Zeile, in die der Benutzer Anweisungen eingeben und über die er mit dem System kommunizieren kann. Eine solche … Universal-Lexikon
-cli — cli·nism; … English syllables
cli|no-ax|is — «KLY noh AK sihs», noun. = clinodiagonal. (Cf. ↑clinodiagonal) … Useful english dictionary
Cli|o — «KLY oh», noun. 1. Greek Mythology. the Muse of history: »Clio…has a nasty habit of upsetting Grand Designs (Hans Morgenthau). 2. plural os. U.S. a statuette awarded annually for the best production, acting, etc., in television commercials … Useful english dictionary
cli|vi|a — «KLY vee uh, KLIHV ee », noun. any plant of a group of African herbs of the amaryllis family noted for its showy flowers: »The color, for which clivia is famed, ranges from orange through orange red to a strong red (New York Times). ╂[< New… … Useful english dictionary
CLI — ● ►en ● 1. sg. m. ►LANG Command Line Interpreter. interpréteur de ligne de commande. programme servant d interface, recevant et interprétant les commandes envoyées en mode texte par l utilisateur (i.e. sous la forme de frappes au clavier). Une… … Dictionnaire d’informatique francophone
CLI — Интерфейс командной строки (англ. Command Line Interface, CLI). Common Language Infrastructure общеязыковая инфраструктура для платформы Microsoft .NET. CLI (x86) инструкция x86 совместимых процессоров сокращение от «CLear Interrupts» АОН… … Википедия
CLI — это… Что такое CLI?
CLI — Saltar a navegación, búsqueda Significados de CLI: Command line interface o en español Línea de comandos (interacción con una computadora, y en contraste a un GUI) Call Level Interface (un API de gestión de base de datos SQL) Common Language… … Wikipedia Español
cli — cli·na·men; cli·nan·dri·um; cli·ner; cli·ni·cian; … English syllables
CLI — may refer to: Computing Command line interface, sending commands to a computer by text typed into a command line interpreter (command line shell). Call Level Interface, an SQL database management API Common Language Infrastructure, a Microsoft… … Wikipedia
Cli — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. CLI, sigle composé des trois lettres C, L et I, est un acronyme pouvant signifier : Command line interface ou « Interface de ligne de… … Wikipédia en Français
CLI — [Abk. für Command Line Interface, dt. »Kommandozeilen Schnittstelle«] das, eine gewöhnlich vom Betriebssystem zur Verfügung gestellte Zeile, in die der Benutzer Anweisungen eingeben und über die er mit dem System kommunizieren kann. Eine solche … Universal-Lexikon
-cli — cli·nism; … English syllables
cli|no-ax|is — «KLY noh AK sihs», noun. = clinodiagonal. (Cf. ↑clinodiagonal) … Useful english dictionary
Cli|o — «KLY oh», noun. 1. Greek Mythology. the Muse of history: »Clio…has a nasty habit of upsetting Grand Designs (Hans Morgenthau). 2. plural os. U.S. a statuette awarded annually for the best production, acting, etc., in television commercials … Useful english dictionary
cli|vi|a — «KLY vee uh, KLIHV ee », noun. any plant of a group of African herbs of the amaryllis family noted for its showy flowers: »The color, for which clivia is famed, ranges from orange through orange red to a strong red (New York Times). ╂[< New… … Useful english dictionary
CLI — ● ►en ● 1. sg. m. ►LANG Command Line Interpreter. interpréteur de ligne de commande. programme servant d interface, recevant et interprétant les commandes envoyées en mode texte par l utilisateur (i.e. sous la forme de frappes au clavier). Une… … Dictionnaire d’informatique francophone
CLI — Интерфейс командной строки (англ. Command Line Interface, CLI). Common Language Infrastructure общеязыковая инфраструктура для платформы Microsoft .NET. CLI (x86) инструкция x86 совместимых процессоров сокращение от «CLear Interrupts» АОН… … Википедия
Настройка окружения в CLI. WSL / Windows Terminal / Хабр
Есть люди, которые большинство рабочего времени проводят в консоли, есть те, кто пользуются терминалом при необходимости, запуская что-то по инструкциям. Но я думаю, что каждый айтишник, будь он разработчиком, сисадмином, сетевым инженером, или даже senior yaml developer`ом, пользуется command line interface. Далеко не все задумываются об улучшении рабочего окружения в CLI и повышении продуктивности работы в терминале. Мне хотелось бы поделиться своим опытом настройки окружения для работы с Linux из Windows.
Из статьи вы узнаете, какими средствами и каким терминалом актуально пользоваться в настоящее время для запуска Linux приложений в Windows 10. Речь пойдёт о WSL 2 и Windows Terminal, набирающим всё большую популярность у пользователей, которым для работы нужен Linux. Так как большинство use-case`ов у меня связаны с удалённым подключением через SSH, большая часть информации будет релевантно для случаев удалённых подключений, со всеми особенностями, связанными с этим (пробросом ssh ключей через ssh agent, пробросом X-сервера, управлением подключениями etс).
Внимание! Под катом много картинок и ужатого, но местами объёмного, gif`а, рекомендуется открывать статью при наличии соответствующего доступа к интернету. Заходите под кат, если вам актуален запуск Linux утилит под Windows, оптимизация работы в окружении CLI, или вы просто любите технические тексты и цветные терминалы. Текст я постарался скрасить скринкастами и скриншотами терминала, чтобы было не скучно.
Как на домашнем, так и на рабочем ноутбуке, единственная ОС сейчас у меня Windows 10, и в этом году я окончательно перешёл на использование только WSL вместо VM / dualboot / Cygwin / MinGW. Теперь мой терминал по умолчанию — это локальный шелл WSL, где я могу запускать практически любые задачи, как в нативном Linux. Кроме этого, в домашней сети работает мини-сервер Intel NUC, на котором развёрнут Proxmox с LXC контейнерами и KVM, в котором крутится Docker. На все VM хожу по SSH, с ключами из директории Windows. Очень много времени в профессиональной деятельности проходит в CLI, с домашним сервером и сетью тоже самое. Поэтому всегда возникает желание разобраться с инструментами для более комфортной работы в терминале, а в Windows всегда с этим были проблемы. Но сейчас всё меняется.
Эта и последующие статьи больше ориентированы на энтузиастов, которые ищут свежие решения и желают прокачать свой шелл. Но и новичкам должно быть что-то интересно, хотя статья получилась с достаточно глубоким погружением в тему и предполагает, что у читателя есть какие-то фундаментальные знания в Linux. Вся информация собрана на основе личного опыта использования WSL, терминала, а так же бесконечного листания Stack Overflow и Github issues в процессе постоянного усовершенствования конфигов и поиска удобных тулов для работы.
В интернете и на Хабре есть несколько нормальных статей про WSL (раз статья про установку/настройку WSL с X-сервером, два заметка про WSL 2, три статья про Python разработку в VSCode с WSL), описывающих установку и настройку системы. Однако не все действия по установке уже актуальны, так же как и ограничений с подводными камнями становится меньше. Я не буду подробно останавливаться на установке, инструкция по установке актуальной (второй) версии WSL есть на сайте Microsoft, также в интернете можно найти краткие туториалы.
Сейчас WSL ещё находится в стадии активной разработки и недавно (июнь 2019) вышла новая версия WSL 2, которая на данный момент доступна только для свежих версий Windows участникам Windows Insiders. При возможности советую сразу проапгрейдить WSL до версии 2, так как в ней улучшили работу системных вызовов, работу с сетью, ФС, и в целом она построена на другой архитектуре и по некоторым данным даёт 20-кратный прирост скорости по сравнению с первой версией.
Посмотреть версию Windows 10 и OS build можно в Start -> Settings ->System -> About, для установки WSL 2 требуется версия Windows 1903 и, как минимум, версия билда 18917. Если вы не участник Windows Insider Program, вероятнее всего, обновления не прилетят до выхода стабильного релиза. Так что если хочется обновиться до последней сборки, можно включить ранний доступ (Fast) в Start -> Settings -> Update & Security -> Windows Insider Program, обновиться и отключить дальнейшие обновления. Стоит учитывать, что устанавливаться будут ещё не оттестированные массово обновления, что может сказаться на стабильности.
Стоит иметь ввиду, что до билда версии 18995 WSL имеет баг при работе с файлами на примонтированных дисках Windows, выражающийся в Input/output error, помогает только перезагрузка WSL (wsl —shutdown в PowerShell). В целом сейчас пофиксено много багов, которые до сих пор присутствуют в WSL версии 1 (который ставится по дефолту) и не-preview дистрибутивах Windows. Если у вас обновления ОС регулируются корпоративными политиками, скорее всего самые свежие обновления прилетать не будут и нужно иметь это ввиду. На одном из ноутбуков у меня стоит билд 18956 и обновлений нет, не смотря на то, что выбрана опция Fast в настройках Insider Program. На другом ноутбуке была установлена чистая система несколько месяцев назад и обновления периодически прилетают и устанавливаются.
Установка WSL 2
Для работы WSL требуется включить Hyper-V, потому что дистрибутивы Linux запускаются в легковесных VM с помощью виртуализации Hyper-V.
Далее я приведу краткую инструкция установки из CLI PowerShell дистрибутива WSL на примере Kali Linux). При предпочтении Ubuntu или другого дистрибутива Linux из доступных, заменить ссылку и названия на соответствующие.
Проверить версию билда Windows:
Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | Select CurrentBuild
Активировать компоненты VirtualMachinePlatform и Microsoft-Windows-Subsystem-Linux:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
Перезагрузка.
Дальше либо установить дистрибутив из Microsoft Store (https://aka.ms/wslstore), либо дальше выполнить в PowerShell:
curl.exe -L -o kali.appx https://aka.ms/wsl-kali-linux-new
Add-AppxPackage .\kali.appx
rm .\kali.appx
Запустить консоль WSL (дистрибутив должен был появиться в меню Start, поиск по названию дистра), дождаться приглашения установить нового пользователя, закрыть консоль.
Теперь дистрибутив должен появится в списке, если выполнить в PowerShell:
wsl -l -v
При необходимости преобразовать дистрибутив в формат WSL версии 2:
wsl --set-version kali-linux 2
wsl --set-default-version 2
Сделать root пользователем по умолчанию (опционально):
kali config --default-user root
Если вы получили ошибку «A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.», значит у вас стоит билд, в котором проявляется очередной (уже исправленный в последних релизах) баг. Как обычно, есть воркэраунд, либо использовать дистрибутив Ubuntu, с ним у меня не было проблем на той же не последней версии билда.
При необходимости, переместить виртуальный диск WSL на другой раздел (отличный от C:) можно по инструкции. Делать это лучше сразу, так как не всё может пройти гладко.
Disclaimer про безопасность. В WSL и на других Linux-серверах в домашней сети я не запускаю никаких критически важных систем, и других пользователей (кроме меня), в сети нет, поэтому я почти везде хожу под root, с ssh аутентификацией через ключи. Я знаю, что это не лучшая практика, однако речь про личное dev-окружение и я не вижу смысла создавать не-root пользователя. Вопросы безопасности в этой статье рассматриваться не будут, об этом я собираюсь когда-нибудь написать отдельно (про то, как в домашней сети без боли организовать взаимодействие сервисов через TLS с централизованным обновлением сертификатов; о синхронизации ~/.ssh/config между серверами, пробросе портов и ключей и т.д.).
Конфигурация WSL
Начиная с билда 17093, основной файл конфигурации WSL находится на ФС дистрибутива по адресу /etc/wsl.conf, в нём описываются настройки, которые будут применять при каждой загрузке дистрибутива:
- Automount — автомонтирование дисков Windows
- Network — генерировать файлы resolv.conf, hosts
- Interop — запуск процессов Windows и добавление Windows $PATH в Linux $PATH
Изначально WSL идёт без этого конфига, его нужно прописать вручную:
[automount]
enabled = true
root = /mnt
options = "metadata,umask=22,fmask=11"
mountFsTab = true
[network]
generateHosts = true
generateResolvConf = true
[interop]
enabled = true
appendWindowsPath = true
Некоторые настойки применяются со значением по умолчанию и с пустым /etc/wsl.conf , но для корректной работы с файлами нужно прописать как минимум параметр options, иначе файлы Windows будут с правами 777 и это нельзя будет изменить из Linux.
Сделать ребут дистрибутива можно из PowerShell командой:
wsl -t kali-linux
После этого можно обновить пакеты и заняться настройкой ОС под себя. Я пока не буду касаться настроек шелла и окружения в Linux, оставлю это для следующей статьи.
apt -y update && apt -y upgrade
Файловая система WSL 2 и производительность
Файлы внутри WSL версии 2 хранятся на виртуальном диске VHDX, в качестве файловой системы используется ext4. Получить доступ к rootfs WSL можно через путь такого формата:
\\wsl$\{DistroName}\
Либо, можно набрать «explorer.exe .» в CLI и откроется обозреватель Windows в текущей директории.
В WSL версии 1 не использовался VHDX и был простой доступ к директории, в которой находились файлы Linux, и Microsoft строго не рекомендовали изменять Linux файлы из Windows. В новой версии WSL доступ к ФС на виртуальном диске обеспечивается с помощью файлового сервера Plan 9 Filesystem Protocol.
В предыдущих версиях WSL были проблемы с производительностью файловой системой, потому что системные вызовы эмулировались через API Windows, доступ к файлам был медленный и нестабильный. В концу 2019 года в WSL 2 архитектура поменялась и используется нативное ядро Linux. Судя по слайду из youtube-презентации The new Windows subsystem for Linux architecture: a deep dive, производительность дисковых операций выросла в 2-5 раз.
Максимальный объём диска ограничен 256GB, при превышении этого объёма необходимо будет делать ресайз, инструкция есть в документации.
Изначально, у WSL были проблемы с тем, чтобы высвобождать ресурсы после использования RAM. В билде 19013 эту проблему решили. Если запускать ресурсоёмкие задачи (например, сборка rust приложения) можно заметить, что процесс Vmmem будет в топе Диспетчера задач, однако потребление памяти значительно снизилось в последних версиях WSL.
Сеть
Имя хоста (hostname) в Linux берётся из имени PC в Windows, независимо от того, что прописать в /etc/hostname или командой hostnamectl set-hostname.
В отличии от первой версии, в WSL 2 сеть работает через виртуальный Hyper-V свитч:
❯❯ ipconfig.exe | grep IPv4
IPv4 Address. . . . . . . . . . . : 192.168.88.200
IPv4 Address. . . . . . . . . . . : 172.31.160.1
IPv4 Address. . . . . . . . . . . : 172.27.144.1
❯❯ ip -br -4 ad show dev eth0
eth0 UP 172.27.150.196/20
❯❯ ip ro list default
default via 172.27.144.1 dev eth0
В данном случае сеть 172.27.144.0/20 используется под WSL, её первый адрес (172.27.144.1) — это хостовая система Windows.
Из Linux обращаться по сети к хостовым сервисам (запущенным в Windows) можно, например, так:
❯❯ nmap -p 3389 $(cat /etc/resolv.conf | grep nameserver | awk '{print $2}')
IP-адрес Windows тут берётся из /etc/resolv.conf, где он генерируется автоматически согласно настройкам wsl.conf.
Наоборот, если нужен коннект к Linux сокету из приложения Windows, необходимо обращаться к IP-адресу WSL. При этом есть нюанс — в Linux сервис необходимо запускать не на localhost (127.0.0.1), а на адресе 0.0.0.0. Например, чтобы быстро поднять SOCKS5 proxy до своего VPS, нужно запустить SSH с параметром dynamic port forwarding:
❯❯ ssh -D 0.0.0.0:2299 -N -f proxy.example.com
После этого в приложении Windows, например Chrome, в качестве адреса SOCKS5 прописать не localhost, а адрес WSL, в данном случае 172.27.150.196. Кстати, таким нехитрым способом туннелирования трафика через VPS в Хроме появляется возможность использовать доступ к сайтам через IPv6.
IP-адрес в Linux после перезагрузки будет каждый раз меняться, так что в сценариях, когда нужно иметь постоянно работающий и автоматически запускающийся port forwarding, нужно искать воркэраунд. Есть много способов решения этой проблемы, разной степени костыльности, почитать подробнее можно в этом issue на github. Я воспользовался утилитой go-wsl2-host, которая реализует Windows Service, добавляющий автоматически IP-адрес WSL в файл hosts Windows, таким образом на хостовой системе можно прописать хостнейм типа ubuntu.wsl и по нему обращаться к Linux. Однако всё это костыли и работает не очень хорошо, остаётся ждать, когда Microsoft пофиксят эти проблемы.
UPD. Пока я писал эту статью, обнаружил, что вышли обновления (билд 18945), в которых появилась возможность достучаться через localhost до сервисов, запущенных в WSL. Правда, оказалось, что есть баг, из-за которого всё равно это не работало у всех, фикс в августовском билде 18970. Так как не всем прилетают обновления, даже если быть участником программы Windows Insiders, я не стал корректировать информацию, может кому-то это поможет настроить сетевое взаимодействие.
OpenSSH в Windows и автозапуск сервисов
Windows 10, как и Windows Server 2019, комплектуется форком OpenSSH, включающем все знакомые утилиты ssh-keygen, ssh-add, scp и другие, а том числе ssh-agent и сам сервер sshd. И клиент, и сервер поставить можно через Apps > Apps and Features > Manage Optional Features, но версия клиента ssh будет не последняя. Я столкнулся с багом, не позволяющим коннектиться к хосту через jump-хост с опцией ProxyJump и оказалось, что эту проблему пофиксили, но нужно вручную обновить SSH клиента. Установить актуальную версию Win32 OpenSSH можно, скачав zip из раздела Releases на гитхабе, и распаковав, к примеру, в C:\Program Files\OpenSSH. Сторонним софтом ssh.exe (например, при использовании Remote Development режима в VSCode) вызывается из $PATH (%SYSTEMROOT%\System32\OpenSSH\), нужно изменить переменную среды. Environment variables изменяются через GUI в Start > Edit the system environment variables (Пуск > Изменение системных переменных среды), там необходимо новый путь поставить выше старой версии.
Так как в WSL не работает Systemd, есть проблема с автозапуском сервисов со стартом системы. Есть несколько способов настроить автостарт ssh сервера в WSL, самый простой — это создать задачу в Task Scheduler, где прописать команду старта сервера. В интернете можно найти разные инструкцииавтозапуска через скрипты vbs, ps1 или bat. Проблема почти всех способов в том, что триггером является запуск основной ОС Windows, то есть, если произойдёт сбой WSL и придётся перезапускать систему (wsl -t), то Linux запустится без запущенного сервиса. При старте Windows дистрибутив WSL запускается только в момент первого обращения к нему.
Я использую SSH-сервер на ноутбуке внутри WSL для того, чтобы удалённо можно было ходить с машины на машину. И, благодаря тому, что я использую техники ssh port forwarding и продуманно настроенный централизованный конфиг SSH клиентов, я могу прозрачно ходить по всем своим серверам, вводя хостнейм вместо адресов. То есть, если даже подключить какой-то из ноутбуков к мобильной сети, autossh демон подключится к jump-хосту и я всё равно смогу зайти на компьютер, никакой NAT не будет помехой. Поэтому мне важно, чтобы sshd всё время был в состоянии up.
Единственный рабочий способ попасть по SSH в WSL — это пробросить порт SSH. Это можно сделать с самого WSL с помощью RemoteForward, либо с другого сервера в домашней сети. Мало лишь кому это надо, да и это уже advanced level, так что просто приведу рабочую команду:
❯❯ ssh -R '*:2363:*:22' -N -f mt.example.com
Теперь при коннекте на адрес mt.example.com:2263 можно попасть прямо в WSL.
Если планируется поднимать SSH-сервер в WSL, нужно не забыть сконфигурировать необходимые параметры запуска сервера в /etc/ssh/sshd_config. Чтобы не было конфликта при бинде сервиса на порт 22, OpenSSH сервер в Windows следует отключить или вовсе удалить, если он установлен (Apps > Apps and Features > Manage Optional Features).
X forwarding
Приятным моментом оказалось, что в Windows 10 есть утилита clip.exe, позволяющая перенаправлять stdout напрямую в буфер обмена Windows. Это удобно использовать в таких программах как tmux, а благодаря пробросу X-сервера текст можно копировать и с удалённых хостов. Чтобы всё работало, необходимо иметь всегда запущенный X-сервер в Windows и правильно прописанную переменную $DISPLAY.
Немного скучной теории. На *nix системах с запущенным X имеются разные типы буферов обмена (primary, secondary, clipboard), в контексте этой статьи это не так важно, но важно для общего понимания механизма работы. Для работы с буферами обмена на Linux есть две утилиты (xclip и xsel). Обе утилиты имеют схожий функционал, в xsel его немного больше, но базовый функционал, необходимый для проброса содержимого буфера, одинаков. В X приложениях выделенный текст попадает в primary selection, вставляется при этом средней кнопкой мышки, в xclip и xsel используется по умолчанию primary selection.
Например, чтобы скопировать в буфер по умолчанию содержимое переменной, нужно передать stdout на stdin утилиты xclip, без дополнительных параметров:
❯❯ echo -n $DISPLAY | xclip
А чтобы вывести содержимое буфера по умолчанию, запустить xclip с ключом -o:
❯❯ xclip -o
172.20.160.1:0
Чтобы буфер обмена перенаправлялся через X-сервер и графические приложения запускались на локальном сервере X, необходимо в переменную $DISPLAY прописать IP-адрес, являющийся default gateway для WSL. Пока что ничего лучше того, чтобы брать его из resolv.conf (который генерируется автоматически Windows), не придумали. Поэтому, самый простой способ — прописать экспорт переменной $DISPLAY в профайле шелла (например, ~/.zshrc для zsh).
❯❯ echo "export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0" >> ~/.zshrc
В качестве X-сервера я выбрал бесплатный VcXsrv, он умеет работать с буфером, имеет разные режимы отображения окон и запускается из командной строки с прописанными опциями. По ссылке на gist можно посмотреть все опции.
Создать задачу автозапуска X-сервера можно в Task Scheduler примерно таким образом:
Triggers: At startup
Actions: Start a program
____Program: "%ProgramFiles%\VcXsrv\vcxsrv.exe"
____Arguments: -wgl -dpi auto -ac -multiwindow
SSH ключи
Чтобы программы из Windows могли использовать SSH ключи (например, редактор при работе с удалённым репозиторием GitHub), и в то же время не было второй копии ключей в WSL, лучше всего сгенерировать ключи в Windows %HOMEPATH%/.ssh и создать симлинки в домашней директории WSL.
ssh-keygen -f /mnt/c/Users/${WIN_USER}/.ssh/id_rsa -b 4096
ln -sf /mnt/c/Users/${WIN_USER}/.ssh/id_rsa ${HOME}/.ssh/id_rsa
ln -sf /mnt/c/Users/${WIN_USER}/.ssh/id_rsa.pub ${HOME}/.ssh/id_rsa.pub
Либо, в ~/.ssh/config можно прописать параметр IdentityFile, указав путь к ключам на диске Windows:
Host *
IdentityFile /mnt/c/Users/${WIN_USER}/.ssh/id_rsa
Если ключи были скопированы откуда-то и права на файлы не выставлены правильно, поправить permissions:
chmod 600 /mnt/c/Users/${WIN_USER}/.ssh/id_rsa
chmod 644 /mnt/c/Users/${WIN_USER}/.ssh/id_rsa.pub
chmod 700 /mnt/c/Users/${WIN_USER}/.ssh
Таким образом, при дальнейшей настройке доступа по ключам SSH пользователь идентифицируется однозначно одним набором ключей в одном месте, как при использовании приложений Windows, так и Linux. Теперь можно добавить публичный ключ на сервера/сервисы, куда необходимо будет ходить с этого компьютера. Если в домашней сети есть другие устройства, на которые требуется доступ по SSH, то правильно будет скопировать свой публичный ключ на эти сервера (ssh-copy-id), но не надо копировать ключи одного сервера на другой. Так как при работе через SSH можно (и нужно) использовать ssh-agent, то при коннекте с одного сервера на другой, агент заботится, чтобы авторизация происходила по проброшенному ключу. Чтобы всё работало правильно и ожидаемо, нужно позаботиться о файле ~/.ssh/config, в котором надо прописать все необходимые опции.
Host *
TCPKeepAlive yes
ServerAliveInterval 30
ServerAliveCountMax 3
ForwardAgent yes
AddKeysToAgent yes
ForwardX11 yes
ForwardX11Trusted yes
Сначала хочется сделать небольшое ревью существующих терминальных оболочек под Windows, умеющих запускать WSL. Среди пользователей популярен функциональный комбайн MobaXterm, который умеет создавать различные сессии, в том числе графические (WSL, bash/zsh, Mosh, RDP, VNC и т.п.), позволяет делать макросы и запускать скрипты, имеет много настроек и функциональных возможностей, ssh agent, автозапускаемый ssh port forwarding, и даже имеет встроенный сервер ftp/tftp/http, но продукт closed source и, к тому же, платный. Hyper — другой, более современный эмулятор терминала, позволяющий запускать WSL shell, терминал построен на HTML/JS/CSS и расширяется с помощью плагинов в виде node.js модулей (awesome list). Есть и другие терминалы, позволяющие запускать WSL с разной степенью костыльности (ConEmu, его форк Cmder, WSLtty и др.), но их я оставлю без внимания.
Дальше в этой статье речь пойдёт про Windows Terminal, на который я перешёл с недавних пор, и пока что испытываю только положительные эмоции. Terminal пока что ещё в статусе бета, но работает достаточно стабильно. Из фич на данный момент реализован мультитаб, разделение панелей (splitting), настраиваемые профили терминальных подключений, цветовые схемы, ну и больше нечего перечислить. Но этого функционала вполне хватает, мне даже нравится, что софт не перегружен лишним — как будто бы разработчики придерживаются принципа KISS.
Terminal эволюционировал из проекта Windows Console (ConPTY), научившись поддерживать ANSI/VT последовательности, 24-bit RGB true color и UTF-8. По ссылкам (начало, продолжение) на Хабре замечательный перевод серии постов блога Windows Command-Line: Inside the Windows Console, где рассказывается про историю создания терминалов, связанные с этим стандарты передачи управляющих последовательностей, кодовые страницы, юникод, появление эмуляторов терминалов и в дальнейшем уже эволюцию командной строки Windows. Техногикам это может быть интересно. Инженерный состав, работающий над этим opensource проектом, ведёт девблог Windows Command Line, который более, чем полностью посвящён WSL и Windows Terminal. Никогда бы до этого момента не поверил бы, что буду с интересом наблюдать за развитием продуктов MS, но что они делают в рамках развития WSL, Terminal и VSCode, действительно заслуживает уважения. Как начиналось развитие WSL, описано в Microsoft Open Source Stories (перевод есть на Хабре). Кстати, Microsoft с 2016 года является платиновым участником Linux Foundation .
Установка и настройка Windows Terminal
Установить Windows Terminal можно из Windows Store, либо скачав бинарник из раздела Releases на гитхабе проекта, там же и вся актуальная информация, инструкции и FAQ. Терминал требует, как минимум, версию Windows 1903 и билд 18362. Предпочтительнее устанавливать через Windows Store, так как обновлять в этом случае проще, прямо из стора. Обновления выходят регулярно, на гитхабе выложен план развития (roadmap) первой версии терминала. На данный момент все фичи версии 1 уже реализованы (по плану до конца 2019 года реализовать все улучшения), дальше несколько месяцев работы над устранениями багов и в апреле 2020 планируется официальный релиз Terminal v1.0. Приятно, что MS теперь есть на гитхабе, их софт научился показывать логи, внятные ошибки и любые проблемы легко гуглятся.
Настроек в терминале пока не много, но их хватает для комфортной работы, продукт активно развивается, есть на github, где пользователи могут создать feature request или bug report. Разработчики принимают участие в обсуждении проблем с пользователями, зачастую предлагая воркэраунды, когда обнаруживается баг.
Конфиг хранится в json формате, после сохранения применяется сразу же. Это удобно хотя бы потому, что можно применять хорошие практики управлением конфигурациями рабочего окружения — все линуксовые конфиги я храню в git репозитории, на Windows из рабочего инструмента использую только VSCode, который умеет синхронизировать конфиг через github gist, а локальный конфиг воркспейса сохранять отдельно в dotfiles. Вот и Terminal движется в ту же сторону, используя те же хоткеи и формат конфига, как VSCode. Править конфиг, кстати, удобно через VSCode, особенно если уже пользуетесь этим отличным редактором от MS. Файл конфигурации терминала уже содержит многие дефолтные настройки, а правильный редактор позволяет посмотреть все опции с описанием key и вариантами value из schema (особенно это удобно, когда у проекта ещё нет полноценной документации). Плюсом доступны все фишечки IDE в виде автодополнения, intellisense, проверкой синтаксиса, форматированием и т.д.
Документация для разработчиков доступна тут, а здесь пока что небольшая страничка документации для пользователей. Отдельная страница посвящена настройкам, которые прописываются в json файле конфигурации. Оттуда можно узнать, что структурно настройки делятся на:
- Global (профиль по умолчанию, изначальный размер окна терминала, тема и т.д.)
- Key Bindings (настройки сочетаний клавиш)
- Profiles (настройки, специфичные для каждого терминала)
- Schemes (цветовые схемы)
Есть такое понятие, как динамические профили, они появляются в конфиге автоматически и имеют свойство source. Это касается дистрибутивов WSL и Azure Cloud Shell. Чтобы создать дубликат профиля одного и того же дистрибутива WSL (например, Ubuntu), необходимо сгенерировать GUID и прописать все желаемые настройки, кроме source, а в качестве commandline прописать wsl -d {DistroName}.
Шрифты
Чтобы терминал по-настоящему радовал пользователя, обязательно надо инсталлировать шрифты с поддержкой спец символов и лигатур. Выбрать можно из:
Я использую программерский шрифт Fira Code как в терминале, так и в редакторе. Им поддерживаются большинство символов, используемых в в оформлении CLI программ и консольных интерфейсов, лигатуры, а также нет никаких проблем с отображением эмодзи в терминале.
Устанавливается шрифт в Windows с помощью установщика шрифтов ОС. Для этого надо скачать последнюю версию понравившегося шрифта с github releases архивом и вручную установить шрифт в системе.
Посмотреть название шрифта (настройка терминала fontFace) можно при установке или после в приложении Character Map (Таблица Символов). Кроме этого, в Start -> Settings -> Personalization -> Fonts можно посмотреть, как шрифт рендерится в разных режимах, и заодно проверить, как рисуются лигатуры.
Заключение
Получилась очень объёмная статья, в одном месте собрана вся актуальная информация по установке, настройке и использованию Windows Terminal совместно с WSL. В дальнейшем я хочу так же оформить статьёй заметки о ZSH и tmux, и расписать свой опыт деплоя конфигураций на VM и синхронизации dotfiles между хостами. Всё в рамках автоматизации домашней сети, но это будет полезно и для разработчиков / девопсов / системных инженеров. Ещё из нераскрытых тем остался запуск Docker в WSL 2, но у меня нет необходимости запускать докер на персональном компьютере, так как для этого есть выделенный сервер.
Я надеюсь, что никто не пожалел, что дочитал статью и вынес для себя какие-то новые знания. Если кому-то есть, что добавить, давайте делиться мыслями в комментариях. Если есть какие-то замечания по тексту, пишите в ЛС, хочется поддерживать этот гайд в актуальности.
References
Что такое консоль (CLI) в Betaflight?
Что такое Betaflight CLI? CLI расшифровывается как command line interface (интерфейс командной строки), это режим настройки, который даёт вам прямой доступ ко всем параметрам прошивки. CLI — это очень мощный инструмент, но он может напугать технически менее подкованных пользователей. В этом руководстве мы расскажем, как и зачем использовать консоль Betaflight.
Оригинал: Betaflight CLI Explained
Зачем нужна консоль (CLI)?
Консоль (или командная строка) появилась еще во времена Beseflight, и до сих пор существует в CleanFlight, Betaflight, iNav, Butterflight и т.д.
Из-за большого количества параметров в этих прошивках, очень непросто сделать простой графический интерфейс для них всех.
Так что есть смысл в графическом интерфейсе отобразить только самые часто используемые, а остальное позволить менять через консоль.
Ещё одно преимущество командной строки в том, что при помощи неё можно легко и просто сделать резервную копию всех настроек в обычном текстовом файле, подробнее про это будет написано ниже.
Как использовать командную строку в Betaflight?
В Betaflight Configurator (как скачать) есть вкладка CLI, к ней появится доступ, как только вы присоедините полетный контроллер к конфигуратору.
Команды можно вводить в текстовом поле (в самом низу экрана), а нажатие клавиши «Enter» исполняет их.
После того, как вы поменяли параметры, нужно набрать команду «save» для сохранения настроек. Если вы выйдете из консоли без исполнения этой команды, то все сделанные изменения могут быть потеряны.
Для выхода из консоли, просто наберите «exit» и нажмите Enter, или кликните на другой закладке или отключите (disconnect) полетный контроллер и подключите заново.
Как проверить настройки в консоли?
Первые команды, которые лучше запомнить — это «dump» и «diff«.
Команда “dump” просто выведет все параметры и их значения. Как вы и подумали, список будет внушительный.
Если же вы хотите увидеть только те параметры, которые поменялись (текущие значения не равны значениям по умолчанию), тогда введите «diff«. Этот список прочесть значительно проще, особенно если вы хотите проверить ранее сделанные изменения.
Более подробно про команду «diff».
Резервное копирование и восстановление настроек Betaflight через CLI
Очень хорошая привычка — делать резервную копию настроек Betaflight каждый раз перед внесением изменений, если что-то пойдет не так, что вы сможете откатить всё назад.
Чтобы сделать резервную копию введите «diff all» и скопируйте полученный результат в текстовый файл.
Чтобы восстановить, просто вставьте содержимое файла в консоль и нажмите enter. Не забудьте сохранить внесенные изменения перед закрытием консоли.
Полезные команды Betaflight CLI
Команд очень много, но некоторые из них очень полезны. Вот список команд, которые я использую очень часто и думаю, что вам стоит о них знать 🙂 Дайте знать в комментариях что ещё полезного можно включить в этот список.
Команда | описание |
---|---|
defaults | сбрасывает настройки контроллера и перезагружает его |
dump | отображает все параметры |
diff | показывает только измененные параметры (относительно значений по умолчанию). PID только для текущего профиля |
diff all | показывает только измененные параметры (относительно значений по умолчанию). PID коэффициенты всех профилей |
exit | выход без сохранения |
get | показывает значение указанной переменной |
help | помощь, показывает список доступных команд |
save | сохранение настроек и перезагрузка контроллера |
set | устанавливает указанное значение (название=значение или пустое поле, или * для списка) |
status | состояние системы |
version | версия прошивки |
Замечу, что разные прошивки (BetaFlight, Butterflight и iNav) и разные версии прошивок могут иметь разный набор команд. Список доступных команд можно получить набрав help в консоли или прочтя соответствующую статью в вики.
Running via the CLI : CodeIgniter User Guide
Как и при вызове контроллеров приложения через URL в браузере,
они также могут быть загружены через командную строку (command-line interface, CLI).
Что такое CLI?
Интерфейс командной строки — это основанный на тексте метод взаимодействия с компьютерами.
Подробную информацию смотрите в статье википедии.
Зачем запускать через командную строку?
Есть много причин для использования CodeIgniter через командную строку, но они не всегда очевидны.
- Запуск действий cron, когда вы хотите использовать wget или curl
- Сделать недоступными действия cron через URL, проверяя $this->input->is_cli_request()
- Выполнение интерактивных задач, вроде установки разрешений, очистки директорий кеша, запуска бэкапов и т.д.
- Интеграция с другими приложениями на других языках.
Например, произвольный скрипт C++ может вызвать команду и запустить код в ваших моделях!
Давайте попробуем: Hello World!
Давайте создадим простой контроллер, который мы попробуем в действии.
Используя текстовый редактор, создайте файл с названием tools.php,
и поместите в него следующий код:
<?php
class Tools extends CI_Controller {
public function message($to = ‘World’)
{
echo «Hello {$to}!».PHP_EOL;
}
}
?>
Потом сохраните этот файл в директорию application/controllers/.
Теперь посетите сайт, используя URL, соответствующий этому:
example.com/index.php/tools/message/to
Теперь откройте терминал, если вы используете Mac или Linux, или Run > «cmd»
в Windows и перейдите к вашему проекту на CodeIgniter.
$ cd /path/to/project;
$ php index.php tools message
Если вы сделали это правильно, вы увидите Hello World!.
$ php index.php tools message «John Smith»
Здесь мы передаем аргументы, тем же путем, каким работают параметры URL.
Если было передано «John Smith», то мы увидим Hello John Smith!.
Вот и все!
В общем, это все, что нужно знать о контроллерах в командной строке.
Помните, что это обычные контроллеры, поэтому роутинг и _remap также работают великолепно.
CLI | Интерфейс командной строки Вычислительная техника »Сети — и многое другое … | Оцените его: | ||||||||
CLI | Интерпретатор Командная строка Вычислительная техника »Общие вычисления | Оцените: | ||||||||
CLI | Общая языковая инфраструктура Академия и наука» Язык и литература — и многое другое… | Оцените это: | ||||||||
CLI | Интерфейс уровня вызовов Вычислительная техника »Общие вычисления | |||||||||
CLI | Идентификация линии вызова Вычислительная техника »Телеком | Оцените: | ||||||||
CLI | Оцените: | |||||||||
CLI | Идентификация телефонной линии Правительственный »Полиция | Оцените: 9000 | Оцените: | |||||||
CLI | Индекс действующего права Правительственное» Право и право | |||||||||
CLI | Christian Leadership Institute Governmental »Institutes | Оцените его: | ||||||||
CLI | Несекретный | Оцените: | ||||||||
CLI | Очистить флаг разрешения прерывания Computing »Assembly | Оценить it | ||||||||
CLI | Сертифицированный следователь Разное »Награды и медали | Оцените: | ||||||||
CLI | Charles Lapierre, Inc. Бизнес »Компании и фирмы | Оцените это: | ||||||||
CLI | Cadet Leader Instructor Государственный» Военный | 4 | ||||||||
CLI | Кумулятивный индекс либерализации Разное »Несекретный | Оценить его: | ||||||||
Классификация | Разное | Классификация CLI 9000 | Оцените: | |||||||
CLI | Mack California Realty Corporation Business »Символы NYSE | CLI | Общий интерфейс Linux Вычисления »Unix | Оцените его: | ||||||
CLI | Идентификация текущей линии 28 | 8 | Оцените это: | |||||||
CLI | A Копирование и вставка Разное »Несекретный | Оцените: | ||||||||
CLI | Идентификация линии звонящего 12 Разное» | Оцените это: | ||||||||
CLI | Детская грамотность Академия и наука »Грамотность | Оцените это: | ||||||||
Оцените: |
.
Что такое AWS CLI? Знайте его приложения и преимущества
Amazon Web Services (AWS) — лидер рынка и ведущий новатор в области облачных вычислений. Он помогает компаниям с широким спектром рабочих нагрузок, таких как разработка игр, обработка данных, хранение, архивирование, разработка и многое другое. Но AWS — это не только привлекательная консоль браузера. Пришло время познакомиться с интерфейсом командной строки Amazon — AWS CLI.
Прежде чем углубиться в подробности, давайте взглянем на темы, затронутые в этой статье.
Вы можете просмотреть эту видеолекцию по интерфейсу командной строки AWS, где наш эксперт по обучению обсуждает все мельчайшие подробности технологии.
Введение в интерфейс командной строки AWS | AWS Training | Edureka
Этот видеоролик «Интерфейс командной строки AWS» от Edureka поможет вам понять, как получить доступ к сервисам AWS и управлять ими с помощью интерфейса командной строки AWS.
Что такое AWS CLI?
Интерфейс командной строки AWS (AWS CLI) — это унифицированный инструмент, с помощью которого вы можете управлять и контролировать все свои сервисы AWS из терминального сеанса на клиенте.
Хотя большинством сервисов AWS можно управлять через Консоль управления AWS или через API-интерфейсы, существует третий способ, который может быть очень полезным: интерфейс командной строки (AWS CLI). Благодаря AWS пользователи Linux, MacOS и Windows могут управлять основными сервисами AWS из командной строки локального терминального сеанса. Таким образом, после одношаговой установки и минимальной настройки вы можете начать использовать все функции, предоставляемые Консолью управления AWS, с помощью терминальной программы.Это будет:
- Оболочки Linux: Вы можете использовать программы командной оболочки, такие как bash, tsch и zsh, для выполнения команд в таких операционных системах, как Linux, macOS или Unix
- Командная строка Windows: В Windows вы можете запускать команды в PowerShell или в командной строке Windows
- Удаленно: Вы можете запускать команды на инстансах Amazon EC2 через удаленный терминал, такой как PuTTY или SSH. Вы даже можете использовать AWS Systems Manager для автоматизации операционных задач в рамках ресурсов AWS
Кроме того, он также обеспечивает прямой доступ к общедоступным API сервисов AWS.В дополнение к командам, эквивалентным низкоуровневому API, AWS CLI предлагает настройку для нескольких сервисов.
Эта статья расскажет вам все, что вам нужно знать, чтобы начать работу с интерфейсом командной строки AWS и эффективно использовать его в повседневных операциях.
Использование AWS CLI
Ниже перечислены несколько убедительных причин, которые помогут вам начать работу с интерфейсом командной строки AWS.
Простая установка
До того, как был представлен интерфейс командной строки AWS, установка таких инструментов, как старый API AWS, включала слишком много сложных шагов.Пользователям приходилось настраивать несколько переменных среды. Но установка интерфейса командной строки AWS выполняется быстро, просто и стандартизировано.
Экономит время
Несмотря на то, что Консоль управления AWS удобна для пользователя, иногда она доставляет немало хлопот. Предположим, вы пытаетесь найти большую папку Amazon S3. Вы должны войти в свою учетную запись, найти нужное ведро S3, найти нужную папку и найти нужный файл. Но с AWS CLI, если вы знаете правильную команду, все задачи займут всего несколько секунд.
Автоматизирует процессы
Интерфейс командной строки AWS позволяет автоматизировать весь процесс контроля и управления сервисами AWS с помощью сценариев. Эти сценарии упрощают пользователям полную автоматизацию облачной инфраструктуры.
Поддерживает все Amazon Web Services
До AWS CLI пользователям требовался специальный инструмент CLI только для сервиса EC2. Он работал правильно, но не позволял пользователям управлять другими веб-сервисами Amazon, такими как, например, AWS RDS (служба реляционных баз данных).Но AWS CLI позволяет управлять всеми сервисами с помощью одного простого инструмента.
Итак, теперь, когда мы поняли, что такое AWS CLI, давайте приступим к процессу установки.
Установка AWS CLI
Интерфейс командной строки AWS можно установить тремя способами:
- Использование pip
- Использование виртуальной среды
- Использование встроенного установщика
В этой статье мы увидим, как установить AWS CLI с помощью pip.
Предварительные требования
- Python 2 версии 2.6.5+ или Python 3 версии 3.3+
- Операционная система Windows, Linux, macOS или Unix
Установка AWS CLI с помощью pip
Обычный способ установить AWS CLI с помощью pip. pip — это система управления пакетами, которая используется для установки и управления программными пакетами, написанными на Python.
Шаг 1: Установить pip (в ОС Ubuntu)
$ sudo apt install python3-pip
Шаг 2: Установить CLI
$ pip install awscli --upgrade --user
Шаг 3: Проверить установку
$ aws --version
Убедившись, что интерфейс командной строки AWS успешно установлен, необходимо настроить его для доступа к сервисам AWS через интерфейс командной строки AWS.
Настройка интерфейса командной строки AWS
Шаг 4. Используйте команду ниже для настройки интерфейса командной строки AWS
$ aws configure Идентификатор ключа доступа AWS [Нет]: AKI ************ Секретный ключ доступа AWS [Нет]: wJalr ******** Название региона по умолчанию [Нет]: us-west-2 Формат вывода по умолчанию [Нет]: json
В результате выполнения вышеуказанной команды , интерфейс командной строки AWS предложит вам ввести четыре части информации.Первые два обязательны. Это ваш идентификатор ключа доступа к AWS и секретный ключ доступа к AWS, которые служат в качестве учетных данных вашей учетной записи. Другая информация, которая вам понадобится, — это регион и формат вывода, которые вы можете оставить по умолчанию на время.
ПРИМЕЧАНИЕ. Вы можете сгенерировать новые учетные данные в AWS Identity and Access Management (IAM), если у вас их еще нет.
Все готово! Теперь вы готовы начать использовать AWS CLI. Давайте посмотрим, насколько мощным может быть интерфейс командной строки AWS, на нескольких основных примерах.
Как использовать AWS CLI?
Предположим, у вас есть сервисы, работающие на AWS, и вы сделали это с помощью консоли управления AWS. Точно такую же работу можно выполнить, но с гораздо меньшими усилиями, используя интерфейс командной строки Amazon.
Вот демонстрация,
Допустим, вы хотите запустить инстанс Amazon Linux из EC2.
Если вы хотите использовать Консоль управления AWS для запуска экземпляра, вам необходимо:
- Загрузить панель мониторинга EC2
- Нажмите Запуск экземпляра
- Выберите AMI и типы экземпляров по выбору
- Установить сеть, поведение жизненного цикла, IAM и параметры пользовательских данных на странице «Настройка подробностей экземпляра»
- Выберите тома хранения на странице «Добавить хранилище»
- Добавьте теги на странице «Добавить теги»
- Настройте группу безопасности на странице «Настройка группы безопасности»
- Наконец , просмотрите и запустите экземпляр
И не забудьте всплывающее окно, в котором вы подтвердите свою пару ключей, а затем вернетесь на панель управления экземпляра EC2, чтобы получить данные своего экземпляра.Звучит не так уж плохо, но представьте, что вы делаете все это при работе с медленным интернет-соединением или если вам нужно запускать несколько экземпляров различных вариантов несколько раз. На это потребуется много времени и усилий, не так ли?
Теперь давайте посмотрим, как выполнить ту же задачу с помощью AWS CLI.
Шаг 1. Создание нового пользователя IAM с помощью AWS CLI
Давайте посмотрим, как создать новую группу IAM и нового пользователя IAM, а затем добавить пользователя в группу с помощью интерфейса командной строки AWS
- Сначала используйте create-group для создания новой группы IAM
$ aws iam create-group --group-name mygroup
- Используйте create-user для создания нового пользователя
$ aws iam create-user --user-name myuser
- Затем добавьте пользователя в группу с помощью команды add-user-to-group
$ aws iam add-user-to-group - -user-name myuser --group-name myiamgroup
- Наконец, назначьте политику (которая сохраняется в файле) пользователю с помощью команды put-user-policy
$ aws iam put-user-policy --user-name myuser --policy-n ame mypoweruserole --policy-document file: // MyPolicyFile.jso
- Если вы хотите создать набор ключей доступа для пользователя IAM, используйте команду create-access-key
$ aws iam create-access-key --user-name myuser
Шаг 2. Запуск инстанса Amazon Linux с помощью AWS CLI
Как и при запуске инстанса EC2 с помощью Консоли управления AWS, перед запуском инстанса необходимо создать пару ключей и группу безопасности.
- Используйте команду create-key-pair для создания пары ключей и опцию –query, чтобы передать ключ прямо в файл
$ aws ec2 create-key-pair --key-name mykeypair --query 'KeyMaterial' - выводить текст> mykeypair.pem
- Затем создайте группу безопасности и добавьте правила в группу безопасности.
$ aws ec2 create-security-group --group-name mysecurityg --description «Моя группа безопасности»
$ aws ec2 authorize-security-group-ingress --group-id sg-
4f8 —protocol tcp —port 3389 —cidr 203.0.113.0/24
- Наконец, запустите экземпляр EC2 по вашему выбору с использованием команды run-instance
$ aws ec2 run-instance --image-id ami-09ae83da98a52eedf --count 1 --instance-type t2.micro --key-name MyKeyPair --security-group-ids sg-
4f8
Кажется, что существует много команд, но вы можете добиться того же результата, объединив все эти команды в одну, а затем сохранив ее как сценарий. Таким образом, вы можете при необходимости изменять и запускать код вместо того, чтобы начинать с первого шага, как при использовании Консоли управления AWS. Это может сократить пятиминутный процесс до пары секунд.
Итак, теперь вы знаете, как использовать AWS CLI для создания пользователя IAM и запуска выбранного вами экземпляра EC2.Но AWS CLI может гораздо больше.
Если это вызвало у вас интерес и вы хотите узнать больше о безопасности приложений, ознакомьтесь с нашим курсом AWS Architect Course , который включает в себя обучение под руководством инструктора и практический опыт работы с проектами. Этот тренинг поможет вам глубже понять кибербезопасность и научиться лучше разбираться в этой теме.
Есть к нам вопрос? Пожалуйста, укажите это в разделе комментариев «AWS CLI», и мы свяжемся с вами.
.
c ++ cli — что такое intptr?
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
.
c ++ cli — что такое свойства в C ++ / CLI?
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира
.