Jump to content
Форум по продукции MOXA

Автозапуск... Автовосстановление... Автоконфигурация


Recommended Posts

Доброго времени суток!

Имеется необходимость на имеющемся сервере с 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

Это как один из рабочих вариантов скрипта (остальных файлов нет... а только скрипт):

#!/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

img2.thumb.png.f76742262bbb099b1c4dd691a682ae7c.png

Link to comment
5 минут назад, Незнайка сказал:

ого :blink:

Вообще-то я про пример реализации.

Делается несколько скриптов, которые стартуют через один. Потому как обслуживающий персонал(КИПиА) не может(или не должен) заниматься установкой того или иного на устройства или ПК. По факту ПК(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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...