- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Учимся писать базовые скрипты в Unix и Linux
- Идентификация оболочки.
- Выбор оболочки
- Выполнение команд
- Добавление комментариев
- Делаем файл исполняемым
- Использование команды if
- Понятие переменных
- Запрос пользователя на ввод данных
- Использование аргументов командной строки
- Различные способы создания циклов
- Использование оператора case
- Реакция на ошибки
- Нужна помощь по написанию скрипта.
- Astra Linux 1.6 (Смоленск). Готова ли система к работе с простыми пользователями? Примеры костылей
- Задача
- Проблемы, тесты, изучение
- Выводы и принятые решения
- Подготовка флэшки и установка
- Изменения, внесённые нами в конфигурацию системы
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Учимся писать базовые скрипты в Unix и Linux
Если вы еще не умеете писать скрипты в системах Unix и Linux, эта статья познакомит с основами написания скриптов.
Написание скриптов в системе Unix или Linux может быть одновременно и простым и чрезвычайно сложным. Все зависит от того, что вы пытаетесь выполнить, используя скрипт. В этой статье мы рассмотрим основы создания скриптов — то, как начать, если вы никогда раньше не создавали скрипты.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Идентификация оболочки.
Сегодня в системах Unix и Linux есть несколько оболочек, которые вы можете использовать. Каждая оболочка — это интерпретатор команд. Он считывает команды и отправляет их ядру для обработки.
Bash является одной из самых популярных оболочек, но существуют также zsh , csh , tcsh и korn . Есть даже оболочка под названием fish , которая может быть особенно полезна новичкам в Linux благодаря полезным параметрам автозаполнения команд. Чтобы определить, какую оболочку вы используете, используйте эту команду:
Вы также можете определить свою основную оболочку, просмотрев файл /etc/passwd :
Один из способов определить, какие оболочки доступны в системе Linux, — это проверить файл /etc/shells .
На выводе видно, что доступно всего девять оболочек.
Какую оболочку выбрать пользователю во многом зависит от того, что он привык использовать, поскольку большая часть синтаксиса в скриптах не представляет команды, которые вы найдете в /bin , /us /bin или /usr/local/bin . Вместо этого они являются частью самой оболочки и называются «встроенными». Сюда входят команды, используемые для цикла (например, for и while ).
Один из простых вариантов создания скриптов — использовать ту оболочку, которую вы используете в командной строке, поскольку, в конце концов, вам будет более или менее комфортно ее пользоваться.
Выбор оболочки
Чтобы определить, какая из доступных оболочек будет выполнять команды вашего скрипта, в первой строке вашего скрипта пропишите одну из строчек, приведенных ниже:
Когда первая строка вашего скрипта идентифицирует оболочку, которая будет использоваться, эта оболочка будет выполнять команды в скрипте. Если вы не определите оболочку в первой строке в скрипте, то оболочка, которую вы используете при вызове сценария, будет той, которая его запускает.
Выполнение команд
Любую команду, которую вы запускаете в командной строке Linux, можно запустить в скрипте, если он совместим с указанной оболочкой. Используйте свой любимый текстовый редактор и вводите нужные для исполнения команды. Вот очень простой скрипт, который выводит текущую дату в формате день-месяц-год. Скрипт имеет название today .
Чтобы запустить этот скрипт, выполните команду:
Добавление комментариев
Рекомендуется добавлять к скриптам комментарии, объясняющие, для чего предназначен скрипт, особенно если скрипт длинный или имеется сложный синтаксис. Просто начните комментарий со знака # . Комментарии могут быть отдельными строками или добавляться в конец команд в скрипте. Например:
Делаем файл исполняемым
Чтобы сделать скрипт исполняемым, используйте команду chmod и убедитесь, что предполагаемые пользователи могут его запустить. Например:
Если скрипт не сделан как исполняемый, его все равно можно запустить с помощью символа . Это встроенная функция, которая «выполняет» (т. е. читает и запускает) скрипт.
Использование команды if
Команда if позволяет вам проверять условия или переменные. В примере ниже мы проверяем, запускается ли скрипт в пятницу.
Базовый синтаксис команды if — if value == other_value . Знак == выполняет сравнение, и необходимо убедиться, что оболочка видит по одному значению с каждой стороны оператора сравнения. По этой причине часто приходится заключать свои строки в кавычки.
Понятие переменных
Чтобы разобраться в понятии переменной важно понимать, что переменные назначаются одним способом, а на них ссылаются другим. Назначьте переменной только ее имя, но перед именем поставьте знак $ , чтобы ссылаться на нее.
Запрос пользователя на ввод данных
Чтобы пользователь, во время исполнения скрипта, смог ввести некоторую информацию, вам необходимо вывести как подсказку, так и команду, чтобы прочитать, что вводит пользователь. Вы также должны присвоить переменной имя, которое имеет смысловое значение, как в этом примере. Обратите внимание, что использование команды echo -n означает, что пользователь вводит свой ответ в той же строке, что и приглашение.
Человек, запускающий сценарий, увидит приглашение и введет ответ :
Использование аргументов командной строки
Чтобы использовать аргументы, которые пользователь вводит вместе с именем скрипта, необходимо знать, как их идентифицировать. Аргументам скрипта будут присвоены имена $1 , $2 и так далее. Для любого аргумента, который вы собираетесь использовать неоднократно, вы можете рассмотреть возможность присвоения этих значений более значимым именам переменных.
В этом случае мы проверяем, является ли первый предоставленный аргумент числовым, и закрываем скрипт, если это не так. Если ответ — число, то далее назначаем его переменной $loops , чтобы использовать позже в скрипте.
Еще одна полезная вещь, которую нужно сделать в скрипте, — это сначала проверить наличие аргументов. В противном случае синтаксис, подобный показанному выше, не сработает, потому что оболочка увидит выражение if [[! = 6 *]]; , что приведет к синтаксической ошибке.
Чтобы проверить правильность количества предоставленных аргументов, вы можете использовать синтаксис, подобный приведенному ниже, который проверяет, были ли предоставлены по крайней мере два аргумента, и, в противном случае, напоминает пользователю, что требуется как количество строк, так и имя файла:
Различные способы создания циклов
Есть несколько способов сделать цикл внутри скрипта. Используйте for , если вы хотите повторить действие заданное количество раз. Например:
Используйте while , если хотите выполнять какое-то действие, пока условие существует или не существует.
Использование оператора case
Операторы case позволяют вашим скриптам реагировать по-разному в зависимости от того, какие значения проверяются. В приведенном ниже скрипте используются разные команды для извлечения содержимого файла, предоставленного в качестве аргумента, путем определения типа файла.
Обратите внимание, что этот сценарий также запрашивает имя файла, если оно не было предоставлено, а затем проверяет, действительно ли указанный файл существует. Только после этого выполняется извлечение.
Реакция на ошибки
Вы можете обнаруживать ошибки в скриптах и реагировать на них и тем самым избегать других ошибок. Хитрость заключается в том, чтобы проверять выходные коды после запуска команд. Если код выхода имеет значение, отличное от нуля, произошла ошибка. В этом скрипте проверяется, запущен ли Apache, но отправляем результат проверки в /dev/null . Затем проверяем, не равен ли код выхода нулю, поскольку это означает, что команда ps не получила ответа. Если код выхода не равен нулю, сценарий сообщает пользователю, что Apache не запущен.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Источник
Нужна помощь по написанию скрипта.
Здравствуйте товарищи. Начал недавно въезжать в мир линукса (астра 1.6), прошу мне помочь родить скрипт :D. Для автоматизации некоторых процессов есть необходимость авторизации клиентских компов на файловой шаре в фоне. Как я понимаю необходимо завести на шаре пользователя и от этого пользователя с клиентской машины авторизоваться на сервере. Сервер тоже на астре. Собственно вопрос, как правильно описать в скрипте авторизацию?
Если ты говоришь про SMB протокол
Чтобы не писать пароль в открытом виде в команде можно создать файл, поместить в него логин, пароль и домен и указывать его в параметрах монтирования.
Должен быть установлен пакет с mount.cifs
Если домена нет, то просто не указывай параметр domain.
Большое спасибо за развернутый и оперативный ответ. Буду пробовать 🙂
Астры никогда не видел, ответ в общем, подойдет ли конкретно тебе не знаю.
Клиенты должны авторизоваться не локально а на сервере (например LDAP) один раз при входе в систему. Это предоставляет доступ к локальным и сетевым ресурсам.
Даже в calculete-linux есть домен на LDAP, а в астре нету? Читай доки по астре и задай вопрос в их поддержку. Это стандартный вопрос и он точно решен.
Если ты юзаешь Смоленск без лицензии то тебе надо по жопе надавать, если же лицензия куплена, то правильно тебе говорят, дуй в поддержку. Не имея этой хрени под рукой сложно что-то сказать. Можешь ещё их вики посмотреть, она вполне приличная.
ЛОР превращается в бесплатную фирму. Фирму помощи студентам. Студентам пропившим лекции. Впрочем я за. 🙂
Даже в calculete-linux есть домен на LDAP, а в астре нету?
Есть, называется ALD(Astra Linux Directory) , такой себе LDAP с керберосом, можно и в виндовую АД ходить и в самбу, только настраивается все это соответствующе — через зад.
Источник
Astra Linux 1.6 (Смоленск). Готова ли система к работе с простыми пользователями? Примеры костылей
Нейтрализация пользователя и процесс установки новой ОС
Привет, Хабр. Сегодня хотим поделиться опытом миграции одной организации (далее – Заказчик) на отечественную ОС в рамках выполнения требований по импортозамещению. Сразу нужно обозначить, что Заказчик выбрал и закупил эту ОС самостоятельно. Нам же досталось удовольствие развертывания, оптимизации этой ОС и выполнение требований по защите информации.
Задача
Имеется государственная информационная система 2 класса защищенности (далее – ГИС) с порядка 1000 условно однотипных пользователей, со строго определенным кругом служебных задач. Сама ГИС состоит из веб-сервисов, распределенных примерно на 30 объектах с локальными базами. Также есть удаленные рабочие места в поселениях. При этом есть общий домен (но далеко не везде), есть шары локальные/корпоративные. Парк компьютеров и оргтехники кое-где не первой свежести, каналы передачи между объектами не ахти. Есть системные администраторы на местах и главные в управлении. В общем, стандартная ситуация, характерная для средних госучреждений перед великой миграцией на отечественное ПО.
Проблемы, тесты, изучение
1. Шару мы подключали через астровский графический файловый менеджер (fly-fm). С отображением русских имён файлов на «оконных» шарах проблем нет. Но эти имена превращаются в набор нечитаемых человеком символов при копировании этих файлов на рабочий стол и в другие места на диске. По этому вопросу работали с разработчиками, вопрос сложный, хоть и фиксы есть.
Есть способ монтирования шары средствами Linux, независимо от особенностей астровского софта. Способ работает, но требует времени на тестирование в реальных условиях. Предварительные испытания показали, что файлы не коверкаются при отображении и копировании, но есть проблемы с совместимостью с некоторыми версиями Windows Server. Суть проблем с разграничением доступа к файлам на шаре при подключении Linux-клиента, тестируем подключение с различными опциями, рекомендуемыми разработчиками пакета cifs-tools, который отвечает за монтирование шар. Иногда используем autofs, в остальных случаях инструктируем как «не надо делать» из того что они привыкли.
2. Связано с первым. При монтировании шары из астровского fly-fm, пользователи не могут сохранять файлы из Firefox непосредственно на «шару». Им приходится делать две операции, из Firefox они сначала сохраняют на рабочий стол, а потом перекидывают документ на шару. Тоже самое для того, чтобы выложить файл на сайт, сначала берут его с шары на рабочий стол, а потом уже закидывают с него в свои базы данных.
Это происходит из-за того, что Firefox использует свой собственный диалог открытия и записи файлов, в котором нет возможности указать на ту символическую ссылку шары, которую мы создали в астровском fly-fm.
Данной проблемы бы не было, используй астра не своё графическое окружение, а какое-нибудь из популярных в Linux. Пока что остается использовать autofs или писать инструкции сотрудникам о правилах копирования и загрузки файлов.
3. Расшаривание USB-принтеров в сеть. Два варианта стандартных: через сервер печати cups и samba протокол не взлетели со стандартными настройками. ПокрутилиПеревели в режим клиента, и подключили к CUPS другого компьютера и заработало, только с оговоркой – у одного клиента может быть только 1 сервер печати и компьютер, настроенный в режим клиента, не может использовать свои локальные Принтеры, потому как свой сервер печати глушится.
4. В учреждениях часто используют макросы в документах предыдущего офисного пакета. Эти макросы несовместимы с макросами в Libre Office, потому что в последнем они пишутся не на Visual Basic, а на Java.
И более того, создатели Астры выкинули из дистрибутива всё связанное с Java, т. к. она принадлежит американской компании Oracle. Т. е. написать макросы в астровском офисе пока вообще невозможно. Единственный вариант — эмуляция или рядом стоящий компьютер с «Окнами».
Выводы и принятые решения
По анализу сложившейся ситуации с инфраструктурой было решено, что автоматизация процесса перехода на отечественную ОС может повлечь неожиданные неприятности. Такой подход можно было применять только в управлении (центральный офис) – в случае чего можно было оперативно отреагировать. На локальных объектах в районах хоть и были вполне типовые рабочие места и техпроцессы, это не дает полной стандартизации и возможности «тихой установки».
Что все-таки мешало запустить одновременную установку по сети:
- отсутствие общего домена;
- зоопарк железа и периферии;
- загрузка из сети не является приоритетной, все равно нужно доехать до удаленного рабочего места и сменить порядок загрузки (как следствие отсутствия централизованного домена – нет оперативной возможности устанавливать какие-либо агенты для предварительной настройки);
- плохие каналы связи с удаленными рабочими местами и между объектами;
- техпроцесс хоть по большей части и типовой, но по факту все равно переводились не все пользователи, т. к. у значительной части есть задачи, которые можно пока что выполнять только по Windows;
- одновременная переустановка ОС на всех компьютерах без дополнительной пользовательской донастройки парализует работу всего учреждения, что является недопустимым.
В итоге было принято решение сформировать максимально универсальный дистрибутив для развертывания руками на месте. Дополнительно пришлось организовать каналы технической поддержки системных администраторов на местах, для консультаций и транслирования опыта работы со служебными задачами.
В целом по теме перехода на отечественное программное обеспечение: на данный момент так и не решены вопросы с миграцией многих приложений. Как совершенно стандартных, так и экзотических (в том числе – самописных). Поэтому миграция на новую ОС сейчас это, в том числе, нахождение оптимальных решений выполнения служебных задач заново и, возможно, существенное изменение существующих технологических процессов организаций. Что в свою очередь может повлечь потребность в актуализации/пересмотре проектных и аттестационных документов, ну и прочие философские размышления на тему ИБ в масштабах страны.
Миграция в рассмотренной организации продолжается. Намечены этапы, выбраны следующие объекты и другие рабочие места для перехода на новую ОС. Также этот проект коррелируется со спущенным сверху планом перехода на отечественное ПО в других наших Заказчиках и новых клиентах. Пока процесс прогрессирует сложно, хоть и порой срочно, но разнообразные подходы тестируются и затем применяются. Информации для аналитики, выбора решений предостаточно, будем обязательно освещать по мере сил и возможности.
Далее технические детали, шаманства и костыли.
Подготовка флэшки и установка
1. Для установки понадобится флэшка или иной внешний USB-накопитель NTFS объёмом не
менее 16Гб. Образ Porteus весит 270Мб. Это по сути мобильный Линукс, который нужен только для запуска нашего скрипта-инсталятора. Образ устанавливаемого Астра Линукс весит 8Гб. При желании можно ужать образ на пол гига и тогда хватит и 8 гиговой флэшки.
2. Скопируйте на неё образ системы и дерево каталогов слегка изменённой нами портативной ОС Porteus.
3. Сделайте флэшку загрузочной, запустив скрипт:
4. Загрузитесь с подготовленного накопителя и следуйте инструкции:
Для Porteus нами был создан модуль, содержащий bash-скрипт развёртывания Astra Linux в диалоговом режиме.
Скрипт сканирует загрузочный накопитель на наличие образов системы, позволяет выбрать диск для установки системы, разворачивает на него образ, и позволяет сделать некоторые установки перед первой загрузкой системы.
Изменения, внесённые нами в конфигурацию системы
1. Включили цифровую клавиатуру на экране приветствия системы, по умолчанию была выключена. Опция «NumLock=On» в конфигурационном файле:
2. Устранили артефакты и медленную отрисовку окон для встроенных видеокарт на базе чипов Intel, включив режим отрисовки UXA в файле:
3. Добавлена возможность сделать локальный сервер печати CUPS клиентом другого сервера. Это позволяет использовать принтеры, подключенные к другим Linux машинам по USB, когда возникают проблемы с их подключением по сети через веб интерфейс.
Здесь необходимо убрать комментарий строки и дописать адрес удалённой машины с принтером. После этого принтер сразу же будет доступен для печати.
4. Переписаны файлы конфигурации отображения шрифтов. Добавлена возможность включения и отключения их сглаживания на общесистемном уровне, а не на уровне приложений.
За включение и выключения сглаживания отвечают скрипты:
5. Добавлена сетевая папка для сканирования с сетевых МФУ, позволяющих сохранять изображения по smb протоколу. В стандартный файл конфигурации Samba-сервера:
а так же комментированная секция для быстрого создания публичной папки обмена:
в системе зарегистрирован samba-пользователь scan с паролем scan
6. Создан скелет настроек для вновь регистрируемых локальных пользователей системы. Он содержит мелкие изменения внешнего вида рабочего стола, изменённые настройки пользовательских приложений, сертификаты для подключения браузера к необходимым сетевым ресурсам и т.д. Некоторые изменения будут описаны подробно далее по тексту.
7. Создан файл конфигурации сервиса rc-local для подсистемы инициализации Linux. Это даёт возможность по необходимости подгружать какие-либо скрипты на стадии инициализации системы.
8. Добавлены фирменные драйвера Xerox для некоторых сетевых принтеров.
9. Установлен и настроен пакет autofs. Позволяет подключать сетевые папки через cifs-utils на системном уровне. В файл:
создан файл конфигурации с инструкцией внутри:
10. Написан скрипт для инициализации сервера обновлений для антивируса Касперского и проверки обновления баз:
11. Добавлены обои рабочего стола и собственная тема экрана приветствия системы.
Настройка принтеров производится через страницу конфигурации CUPS в браузере по адресу: 127.0.0.1:631 или localhost:631
Страница переведена на русский язык и интуитивно понятна. Для установки принтера нужны права администратора системы. Для публикации принтеров в сети нужно активировать два пункта в параметрах сервера.
При добавлении сетевого принтера обычно используется AppSocket/HP JetDirect или протокол интернет-печати (ipp) c указанием ip адреса.
Если же сетевой принтер не подключился данными способами, то можно сделать локальный сервер печати CUPS клиентом другого сервера, отредактировав файл /etc/cups/client.conf, указав в нём сетевой адрес машины с подключенными принтерами. В этом случае вам не понадобится установка каких-либо драйверов. Хотя в базе CUPS есть огромное количество драйверов, всё же иногда требуется установка фирменных.
Для некоторых сетевых принтеров Xerox нами уже установлены фирменные драйвера и конфигуратор, команда:
При обнаружении принтера нужно будет его выбрать и указать имя очереди, оно же название принтера в системе. Некоторые модели принтеров, по умолчанию, настроены на печать страницы с номером для каждого отдельного задания. Найдите эту опцию в настройках очереди и отключите её.
Если у вас принтер HP, то лучше воспользоваться фирменными драйверами, которые так же предустановлены в систему. Перейдите в панель управления > оборудование > установка дополнительного плагина HP, затем там же > установка принтеров, факсов, сканеров HP.
Для установки сканера нужно в терминале от администратора системы ввести команду scanimage -L. Если сканер найден, вы увидите вывод с его названием. Если вывод будет пустым, то вам следует поискать фирменные драйвера в сети Интернет.
На этом пока все. Делитесь в комментариях своим опытом внедрения отечественных ОС.
Источник