oiv_1968 Posted August 28, 2018 Share Posted August 28, 2018 Доброго времени суток! Имеется необходимость на имеющемся сервере с Debian сделать автонастройку системы на устройствах типа UC7101Lx, UC7112Lx-Plus, IA240Lx. 1. Вновь купленное устройство надо настроить и поместить в него файлы проекта: Изначально у них IP 192.168.3.128 (lan1), пароль root для пользователя root. Скрипт на сервере должен произвести настройку удалённо на новом устройстве... либо запросить параметры если устройство ранее применялось. Так же должен произвести компиляцию средствами toolchain для устройства и разместить в нужном месте устройства. Изменить и/или добавить пользователя и пароль. Изменить файл /etc/init.d/rc.local и /etc/network/intrerfaces. Произвести перезапуск устройства и произвести проверку на соответствие для проекта. 2. Скрипт сопровождения на сервере обязан контролировать работоспособность программы проекта и производить взаимодействие (сбор данных и управление) с проектом на устройстве. В случае необходимости производить перезапуск устройства. В этих целях применял NetCat и Ping для проверки взаимодействия. Для nc имеется проблема - долго висят "мёртвые" соединения и интервал проверки пришлось увеличить до 3-х минут. Для управления telnet, а для копирования файлов ftp. Имеет ли кто опыт в подобной реализации? Спасибо заранее. Link to comment
oiv_1968 Posted August 28, 2018 Author Share Posted August 28, 2018 Это как один из рабочих вариантов скрипта (остальных файлов нет... а только скрипт): #!/bin/bash # function ffilecntrl() { clear echo "Проверка соответствия файлов для системы водоподготовки на сервере..." echo "...компиляция сервера \"swc\"" cd create str=`make` cmp /home/httpd/swc/swc swc 2>/dev/null res=$? if [ ${res} -eq 0 ]; then echo "файл \"swc\" соответствует проекту" else echo "файл \"swc\" не соответствует проекту" echo "копируем новый файл..." cp swc /home/httpd/swc/swc fi echo "...очистка после компиляции" make clean cd .. cd bash echo "...проверка соответствия \"swc.sh\"" cmp /home/httpd/swc/swc.sh swc.sh 2>/dev/null res=$? if [ ${res} -eq 0 ]; then echo "файл \"swc.sh\" соответствует проекту" else echo "файл \"swc.sh\" не соответствует проекту" echo "копируем новый файл..." cp swc.sh /home/httpd/swc/swc.sh fi echo "...проверка соответствия \"swc.sh\"" cmp /home/httpd/swc/swcwork.sh swcwork.sh 2>/dev/null res=$? if [ ${res} -eq 0 ]; then echo "файл \"swcwork.sh\" соответствует проекту" else echo "файл \"swcwork.sh\" не соответствует проекту" echo "копируем новый файл..." cp swcwork.sh /home/httpd/swc/swcwork.sh fi cd .. cd html echo "...проверка соответствия \"index.html\"" cmp /home/httpd/swc/index.html index.html 2>/dev/null res=$? if [ ${res} -eq 0 ]; then echo "файл \"index.html\" соответствует проекту" else echo "файл \"index.html\" не соответствует проекту" echo "копируем новый файл..." cp index.html /home/httpd/swc/index.html fi echo "...проверка соответствия \"swc_dat.php\"" cmp /home/httpd/swc/swc_dat.php swc_dat.php 2>/dev/null res=$? if [ ${res} -eq 0 ]; then echo "файл \"swc_dat.php\" соответствует проекту" else echo "файл \"swc_dat.php\" не соответствует проекту" echo "копируем новый файл..." cp swc_dat.php /home/httpd/swc/swc_dat.php fi echo "...проверка соответствия \"swcwork.php\"" cmp /home/httpd/swc/swcwork.php swcwork.php 2>/dev/null res=$? if [ ${res} -eq 0 ]; then echo "файл \"swcwork.php\" соответствует проекту" else echo "файл \"swcwork.php\" не соответствует проекту" echo "копируем новый файл..." cp swcwork.php /home/httpd/swc/swcwork.php fi cd .. echo 5 } function fconnect() { clear echo "Ping устройства управления IA240LX по адресу 192.168.0.232" str=`ping -c 1 192.168.0.232 2>/dev/null` res=$? if [ ${res} -eq 0 ]; then echo "...связь есть" else echo "...связи нет и дальнейшая проверка отменена!" sleep 5 return fi echo "Проверка связи с сервером Modbus RTU на порту P1" str=`nc -z 192.168.0.232 8971 2>/dev/null` res=$? if [ ${res} -eq 0 ]; then echo "...связь есть с Modbus RTU на порту P1 (управление клапанами и приводами)" else echo "...связи нет с Modbus RTU на порту P1 (управление клапанами и приводами)" echo "...дальнейшая проверка отменена!" sleep 5 return fi echo "Проверка связи с сервером Modbus RTU на порту P2" str=`nc -z 192.168.0.232 8972 2>/dev/null` res=$? if [ ${res} -eq 0 ]; then echo "...связь есть с Modbus RTU на порту P2 (измеритель температуры)" else echo "...связи нет с Modbus RTU на порту P2 (измеритель температуры)" echo "...дальнейшая проверка отменена!" sleep 5 return fi echo "Проверка связи с сервером системы управления IA240LX водоподготовки" str=`nc -z 192.168.0.232 8197 2>/dev/null` res=$? if [ ${res} -eq 0 ]; then echo "...связь есть с сервером системы управления IA240LX водоподготовки" else echo "...связи нет с сервером системы управления IA240LX водоподготовки" echo "...функционирование не реально!" sleep 5 return fi echo "Всё в порядке!" sleep 5 } #основной цикл работы ((loop = 1)) while( ((loop > 0)) ); do clear echo "********************************************" echo "* Настройка Сервера системы водоподготовки *" echo "********************************************" echo "Выбрать действие:" echo "1 - соответствие файлов для системы водоподготовки" echo "2 - проверка связи в устройством управления MOXA IA240LX системы водоподготовки" echo "иначе - прекратить действия" echo -n "Ваш Выбор ?:" read wrk case $wrk in "1") ffilecntrl ;; "2") fconnect ;; *) ((loop = 0)) ;; esac done #конец основного цикла exit 0 Его задача сформировать "окружение" на сервере с Debian (PC) для работы с системой на основе IA240LX. Следует отметить тут проверяется только связь с устройством IA240LX и соответствие файлов для работы самого сервера DEBIAN(PC). Необходим для конфигурации сервера Debian(PC) для работы с системой водоподготовки. Следует так же отметить, что для настройки устройств MOXA служит другой скрипт. А так конфигурируем/управляем через php + bash Link to comment
oiv_1968 Posted August 28, 2018 Author Share Posted August 28, 2018 5 минут назад, Незнайка сказал: ого Вообще-то я про пример реализации. Делается несколько скриптов, которые стартуют через один. Потому как обслуживающий персонал(КИПиА) не может(или не должен) заниматься установкой того или иного на устройства или ПК. По факту ПК(Debian) один работает с рядом устройств (систем): 1 Сбор данных с индукционной печи (Promelt ABP) и системой её охлаждения(UNO1019). Этот ПК ещё и сервер для раздачи данных реального времени клиентам и ПК архивирования данных(Windows XP); 2 Сбор данных от станции катодной защиты через UC7101Lx (modbusRTUserverS). Эта же часть сервер на ПК(Debian) станции катодной защиты для выдачи клиентам данных по локальной сети и серверу базы данных (Windows); 3 Сбор данных от системы управления водоснабжением на основе IA240LX(сама по себе автономная на основе нескольких modbusRTUserverS и одного сервера управления). Как сервер на ПК(Debian) предоставляет управление и данные по локальной сети; 4 Настройка устройств (вновь приобретённых) для работы в перечисленном и ещё для настроек установок порезки кабеля, КМА, связи робота покраски. Всё это через один ПК на основе Debian, на котором ещё и WEB сервер Apache... который применяется для мгновенных просмотров и управления. Подготовка документации для каждого пункта дело не шуточное. Самое простое это упростить пустую писанину, которую как обычно никто не читает... и приходится приходить на помощь... и делать самому. Потому и прошу поделиться опытом в этом. В идеале должно быть так: 1 установили debian допустим на новый ПК 2 установили на него apache+php и сделали настройку пользователя для apache 3 скопировали из архива директорию в директорию apache "www-data" 4 запустили конфигурацию(скрипт) которая сделает(это реализовано): -настройку сервера apache; -сетевые настройки; -ramdisk, rc.local и т.п. 5 с помощью скриптов (интерактивно) произведёт проверку и настройку подключенных устройств; 6 разместит рабочие файлы для всех устройств (вплоть до компиляции) для любой машины Debian; 7 подготовит автозапуск при включении. Собственно надо сформировать весь набор для полуавтоматической настройки всего... включая устройства. Поделитесь опытом... Спасибо! Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now