По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Как системный администратор, вполне вероятно, что вы написали несколько сценариев Bash для автоматизации вашей работы. Например, вы можете запускать сценарии Bash для резервного копирования вашей работы или для регистрации некоторых событий, происходящих на вашем сервере.
Скрипты Bash, как и скрипты, написанные на других языках программирования, могут запускаться различными способами.
В этой статье мы расскажем о всех способах запуска скрипта Bash в Linux.
Подготовка
Прежде чем вы сможете запустить ваш скрипт, вам нужно, чтобы ваш скрипт был исполняемым. Чтобы сделать исполняемый скрипт в Linux, используйте команду chmod и присвойте файлу права execute. Вы можете использовать двоичную или символическую запись, чтобы сделать ее исполняемой.
$ chmod u+x script
$ chmod 744 script
Если вы не являетесь владельцем файла, вам необходимо убедиться, что вы принадлежите к правильной группе или что права доступа предоставлены «другой» группе в вашей системе.
В некоторых дистрибутивах ваш файл будет выделен другим цветом, когда он исполняемый.
Теперь, когда ваш файл исполняемый, давайте посмотрим, как можно легко запустить скрипт Bash.
Запустить Bash скрипт из пути к скрипту
Чтобы запустить Bash скрипт в Linux, просто укажите полный путь к скрипту и укажите аргументы, которые могут потребоваться для запуска Bash скрипта.
$ /path/to/script <arg1> <arg2> ... <argn>
В качестве примера, скажем, у вас есть Bash-скрипт, расположенный в вашем домашнем каталоге.
Чтобы выполнить этот скрипт, вы можете указать полный путь к скрипту, который вы хотите запустить.
# Абсолютный путь
$ /home/user/script
# Абсолютный путь с аргументами
$ /home/user/script "john" "jack" "jim"
Кроме того, вы можете указать относительный путь к скрипту Bash, который вы хотите запустить.
# Относительный путь
$ ./script
# Относительный путь с аргументами
$ ./script "john" "jack" "jim"
Таким образом вы узнали, как легко запустить Bash-скрипт в своей системе.
Запустить Bash скрипт, используя bash
Чтобы запустить скрипт Bash в вашей системе, вы должны использовать команду bash и указать имя скрипта, который вы хотите выполнить, с необязательными аргументами.
$ bash <script>
Кроме того, вы можете использовать sh, если в вашем дистрибутиве установлена утилита sh.
В качестве примера, скажем, вы хотите запустить скрипт Bash с именем script. Чтобы выполнить его с помощью утилиты bash, вы должны выполнить следующую команду
$ bash script
This is the output from your script!
Выполнить скрипт Bash, используя sh, zsh, dash
В зависимости от вашего дистрибутива, в вашей системе могут быть установлены другие утилиты оболочки.
Bash - интерпретатор оболочки, установленный по умолчанию, но вы можете захотеть выполнить ваш скрипт с использованием других интерпретаторов. Чтобы проверить, установлен ли интерпретатор оболочки в вашей системе, используйте команду which и укажите нужный интерпретатор.
$ which sh
/usr/bin/sh
$ which dash
/usr/bin/dash
Когда вы определили интерпретатор оболочки, который хотите использовать, просто вызовите его, чтобы легко запустить скрипт.
Запуск скрипта Bash из любого места
В некоторых случаях вы можете запускать скрипты Bash, где бы вы ни находились в вашей системе.
Чтобы запустить скрипт Bash из любой точки вашей системы, вам нужно добавить свой скрипт в переменную среды PATH.
$ export PATH="<path_to_script>:$PATH"
Благодаря тому, что путь к скрипту добавлен в PATH, вы можете вызывать его там, где хотите в своей системе.
$ script
This is the output from script!
Кроме того, вы можете изменить переменную среды PATH в вашем файле .bashrc и использовать команду source для обновления вашей текущей среды Bash.
$ sudo nano ~/.bashrc
export PATH="<path_to_script>:$PATH"
Выйдите из файла и используйте команду source для файла bashrc для внесения изменений.
$ source ~/.bashrc
$ echo $PATH
/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Отлично! Теперь ваш скрипт может быть запущен из любой точки вашей системы.
Запуск Bash скриптов из графического интерфейса
Последний способ выполнения Bash скриптов - это использование графического интерфейса, в данном случае интерфейса GNOME.
Чтобы запустить ваши скрипты с использованием GNOME, вы должны установить в проводнике Ask what to do для исполняемых файлов.
Закройте это окно и дважды щелкните файл скрипта, который вы хотите выполнить.
При двойном щелчке вам предлагаются различные варианты: вы можете выбрать запуск скрипта (в терминале или нет) или просто отобразить содержимое файла.
В этом случае мы заинтересованы в запуске этого скрипта в терминале, поэтому нажмите на эту опцию.
Успех! Ваш скрипт был успешно выполнен
Заключение
Из этого руководства вы узнали, как легко запускать Bash скрипты в своей системе, указав путь к скрипту или интерпретаторы, доступные на вашем хосте. Вы узнали, что можете сделать это еще проще, добавив путь к скрипту в переменную среды PATH или используя существующие функции в пользовательском интерфейсе GNOME.
FTP расшифровывается как File Transfer Protocol, или протокол передачи данных. Это сетевой протокол/протокол обмена данными, благодаря которому файлы передаются между компьютерами через сеть TCP/IP (протокол управления передачей/интернет-протокол).
Примеры сетей TCP/IP:
HTTP (протокол передачи гипертекста)
HTTPS (протокол защищенной передачи гипертекста)
FTP (протокол передачи файлов)
Как работает протокол передачи файлов?
Для обмена файлами между компьютерами через FTP необходимо открыть FTP-сервер (о том, что это такое, ниже).
В зависимости от типа посещаемого сервера, для доступа к файлам вас могут попросить ввести имя пользователя и пароль. Соединения с сервером, которые не запрашивают авторизации до открытия доступа к файлам, называются анонимными FTP.
Как только пользователь успешно открыл/авторизовался на FTP-сервере, он может скачивать или загружать файлы на сервер.
Получить доступ к FTP-серверу можно одним из нижеприведенных способов:
Через веб-браузер. Вы можете напечатать адрес сервера в своем браузере. Он будет выглядеть примерно так: ftp.myftpfiles.com или https://www.myftpfiles.com. Оказавшись на сервере, вы можете работать с файлами, которые загрузил туда их владелец.
Через FTP-клиент
Что такое FTP-клиент?
FTP-клиент – это программное обеспечение для соединения между запрашивающим доступ компьютером и сервером, на котором хранятся файлы.
Существует великое множество различных FTP-клиентов. Они предлагают графический пользовательский интерфейс (GUI), с которым можно взаимодействовать.
Ниже показано, как выглядит FTP-клиент, и как им пользоваться. Мы будем работать в FileZilla.
В изображении выше видны текстовые поля. Адрес сервера вводится в текстовое поле Host. Текстовые поля Username и Password нужны для серверов, которые открывают доступ к файлам только после авторизации. Текстовое поле Port обычно имеет значение 21. Это специальный порт для FTP. После заполнения всех необходимых полей вы можете нажать Quickconnect и подключиться к серверу.
В левой части приложения есть local site, то есть мой компьютер со списком существующих директорий. Справа – Remote site, то есть место, где показывается вся информация и файлы на сервере.
Что такое FTP-сервер?
По сути, FTP-сервер – это компьютер, на который изначально загружались файлы. У каждого сервера есть FTP-адрес. Пользователь может открыть FTP-сервер через TCP/IP в браузере или через FTP-клиент.
Сервер позволяет посетителю загружать и скачивать файлы.
Безопасны ли FTP-сервера?
Хоть многие FTP-серверы и требуют авторизации, они не считаются защищенными, поскольку в протоколе отсутствует шифрование. Из-за этого повышается вероятность того, что доступ к файлам на FTP-сервере получат сторонние или нежелательные лица.
Самый предпочтительный и безопасный протокол для FTP – это SFTP (Secure File Transfer Protocol - защищенный протокол передачи данных). Это как HTTP и HTTPS.
SFTP считается более безопасным, поскольку данные на сервере зашифрованы.
К альтернативным вариантам относятся:
FTPS (File Transfer Protocol Secure)
HTTPS (Hypertext Transfer Protocol Secure)
AS2 (Applicability Statement 2)
Плюсы использования FTP
Вот несколько плюсов от использования FTP:
более быстрая передача файлов
поддержка многими хостами
возможность передачи больших файлов
возможность запланировать передачу файлов
возобновление передачи файлов после прерывания
Минусы использования FTP
Есть ряд минусов при использовании FTP:
FTP-серверам не хватает безопасности
основные браузеры (Chrome и Firefox) больше не поддерживают FTP
файлы и учетные данные пользователей не зашифрованы
на некоторых серверах могут присутствовать вредоносные файлы
Заключение
В данной статье мы поговорили о протоколе передачи файлов, который позволяет нам обмениваться файлами между компьютерами внутри сети.
Мы разобрали, что такое FTP-клиент и FTP-сервер. Кроме того, рассказали, почему FTP-серверы считаются незащищенными и предложили ряд более «безопасных» альтернатив. И, наконец, мы рассмотрели плюсы и минусы использования FTP.
Channel event logging (события на канале) – система, созданная для детального логирования телефонных событий. Система CEL позволяет пошагово отслеживать сложные сценарии вызовов, последовательно записывая их в таблицу данных. Сегодня расскажем о типах событий CEL и о содержимом таблицы ‘cel’
?
Как и обычно, подключаемся к базе данных asteriskcdrdb:
[root@asterisk]# mysql // подключаемся к MySQL
mysql> use asteriskcdrdb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
Смотрим содержимое таблица cel, видим поля и типы данных:
mysql> show columns from cel;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| eventtype | varchar(30) | NO | | NULL | |
| eventtime | datetime | NO | | NULL | |
| cid_name | varchar(80) | NO | | NULL | |
| cid_num | varchar(80) | NO | | NULL | |
| cid_ani | varchar(80) | NO | | NULL | |
| cid_rdnis | varchar(80) | NO | | NULL | |
| cid_dnid | varchar(80) | NO | | NULL | |
| exten | varchar(80) | NO | | NULL | |
| context | varchar(80) | NO | MUL | NULL | |
| channame | varchar(80) | NO | | NULL | |
| appname | varchar(80) | NO | | NULL | |
| appdata | varchar(80) | NO | | NULL | |
| amaflags | int(11) | NO | | NULL | |
| accountcode | varchar(20) | NO | | NULL | |
| uniqueid | varchar(32) | NO | MUL | NULL | |
| linkedid | varchar(32) | NO | MUL | NULL | |
| peer | varchar(80) | NO | | NULL | |
| userdeftype | varchar(255) | NO | | NULL | |
| extra | varchar(512) | NO | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
20 rows in set (0.00 sec)
К описанию таблицы CEL мы вернемся чуть позже, а сейчас давайте разберем возможные события в рамках системы Channel Event Logging :
Событие
Описание
CHAN_START
Канал связи был создан
CHAN_END
Канал связи был разорван
LINKEDID_END
Канал связи с указанным ID был разорван
ANSWER
На созданном канале связи ответили на звонок. При звонке в город, данное событие генерируется когда удаленный (вызываемый абонент) поднимет трубку
HANGUP
Была повешена трубка. Как правило, это событие сразу же сопровождается событием CHAN_END. Разница в том, что HANGUP происходит когда трубка положена, а CHAN_END, когда Asterisk освободил все ресурсы, занимаемые этим каналом
APP_START
Определенное приложение было запущено для этого канала. Например, это может быть Dial, Busy или Congestion
APP_END
Указанное приложение в событие APP_START завершило свое выполнение
PARK_START
Была произведена «Парковка» вызова. Функция парковки, представляет собой определенный номер, в который помещается вызов, работу с которым, могут продолжить другие сотрудники.
PARK_END
Вызов был снят с «Парковки»
BRIDGE_START
Между двумя каналами образовалось соединение (мост). Данное событие сопровождает такие приложения, как Dial() или Queue()
BRIDGE_END
Мост между каналами был разрушен
BRIDGE_UPDATE
В соединении между каналами произошло обновление. Это события появляется тогда, например, если изменится имя или прочая канальная информация
BLINDTRANSFER
Был выполнен «слепой» (без предварительной консультации) трансфер
ATTENDEDTRANSFER
На канале был выполнен трансфер с предварительной консультацией
USER_DEFINED
Кастомное событие, которое определяется в приложении CELGenUserEvent()
В таблице выше мы перечислили основные события в рамках системы CEL. Теперь перейдем к описанию таблицы ‘cel’ в рамках базы asteriskcdrdb:
Столбец
Пример значения
Описание
eventtype
CHAN_START
Имя произошедшего события (все события описаны в таблице выше)
eventtime
2016-04-01 14:53:54
Время, в которое произошло указанное выше событие
cidname
Oleg Ivanov
Имя, передаваемое в рамках CallerID (CID), закрепленное за данным каналом
cidnum
84991111111
Номер, передаваемый в рамках CallerID (CID), закрепленный за данным каналом в рамках соответствующего события
cidani
84991111111
Automatic Number Identification (ANI), или другими словами – автоматическое определение номера на данном канале в рамках соответствующего события
cidrdnis
84991111234
Номер перенаправления на данном канале в рамках соответствующего события
ciddnid
84993456458
Набранный номер на канале в рамках соответствующего события
exten
7057
Добавочный номер, который был набран, в рамках плана нумерации
context
Local
Контекст для добавочного номера, который был набран
channame
SIP/0007B3060EB4-00000010
Имя установленного канала
appname
Dial
Название приложения, которое было выполнено
appdata
SIP/0007B3060EB4
Параметры, которые были переданы в приложении согласно плана нумерации
amaflags
DOCUMENTATION
Метка Automatic Message Accounting (AMA) – автоматический учет стоимости вызова.
accountcode
6473
Идентификатор аккаунта. Данное значение пустое по умолчанию, и определяется параметрами конкретного пользователя.
uniqueid
6547653456.18332
Уникальный идентификатор для канала
userfield
Chto ugodno
Пользовательское поле
linkedid
6547653456.18332
Данный идентификатор, позволяет связать воедино звонок по частям. Например, если одна часть звонка была входящей из города, следом был трансфер, потом еще один – у все этих вызовов будет разный uniqueid, но одинаковый linkedid
peer
SIP/0007B306054F-00000020
Название канала, к которому, который соединен (bridge) с каналом с идентификатором channame
Теперь, давайте рассмотрим как выглядит запись в таблице ‘cel’. Для этого выполним нижеследующий запрос к базе данных asteriskcdrdb:
mysql> SELECT * FROM `cel` WHERE `uniqueid` = '1459503113.15';
+------+------------+---------------------+-------------+-------------+-------------+-----------+----------+-------------+------------------+--------------------------------------------+------------+----------------------------------------------------------------------------------+----------+-------------+---------------+---------------+------+-------------+----------------------------------------------------------------------------+
| id | eventtype | eventtime | cid_name | cid_num | cid_ani | cid_rdnis | cid_dnid | exten | context | channame | appname | appdata | amaflags | accountcode | uniqueid | linkedid | peer | userdeftype | extra |
+------+------------+---------------------+-------------+-------------+-------------+-----------+----------+-------------+------------------+--------------------------------------------+------------+----------------------------------------------------------------------------------+----------+-------------+---------------+---------------+------+-------------+----------------------------------------------------------------------------+
| 2339 | CHAN_START | 2016-04-01 12:31:53 | | | | | | 89641111111 | from-internal | Local/89641111111@from-internal-00000004;2 | | | 3 | | 1459503113.15 | 1459503090.11 | | | |
| 2346 | APP_START | 2016-04-01 12:31:53 | 79252222222 | 79252222222 | 79252222222 | | | recordcheck | sub-record-check | Local/89641111111@from-internal-00000004;2 | MixMonitor | 2016/04/01/out-89641111111-79252222222-20160401-123153-1459503113.15.wav,ai(LOCA | 3 | | 1459503113.15 | 1459503090.11 | | | |
| 2347 | APP_END | 2016-04-01 12:31:53 | 79252222222 | 79252222222 | 79252222222 | | | recordcheck | sub-record-check | Local/89641111111@from-internal-00000004;2 | MixMonitor | 2016/04/01/out-89641111111-79252222222-20160401-123153-1459503113.15.wav,ai(LOCA | 3 | | 1459503113.15 | 1459503090.11 | | | |
| 2364 | HANGUP | 2016-04-01 12:32:10 | | 79252222222 | 79252222222 | | | h | from-internal | Local/89641111111@from-internal-00000004;2 | | | 3 | | 1459503113.15 | 1459503090.11 | | | {"dialstatus":"CANCEL","hangupcause":16,"hangupsource":"dialplan/builtin"} |
| 2365 | CHAN_END | 2016-04-01 12:32:10 | | 79252222222 | 79252222222 | | | h | from-internal | Local/89641111111@from-internal-00000004;2 | | | 3 | | 1459503113.15 | 1459503090.11 | | | |
+------+------------+---------------------+-------------+-------------+-------------+-----------+----------+-------------+------------------+--------------------------------------------+------------+----------------------------------------------------------------------------------+----------+-------------+---------------+---------------+------+-------------+----------------------------------------------------------------------------+
5 rows in set (0.00 sec)
В указанном выше запросе мы извлекли все содержимое таблицы ‘cel’, где поле uniqueid = 1459503113.15. Полученные данные можно обрабатывать и использовать для глубокой аналитики