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

Сказка про NC... или как его не хватало.


Recommended Posts

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

Случилось так, что потребовалось иметь что-то наподобие прокси... или что-то с похожими функциями. Применял и telnet, нестандартно конечно, но судя по форумам все используют netcat... которого в uc7112plus/ia240 нет. И вот.:

- скачал исходник nc-2.0;

- распаковал и запустил configure в директории (так сказать из коробки);

- "подключил" компилятор для moxa, отредактировав Makefile;

####
#CC = gcc
PREFIXPATH=/usr/local/arm-linux/bin
CC=$(PREFIXPATH)/arm-linux-gcc
####

собственно найдя строку CC = gcc, закоментировал её и добавил компилятор для moxa;

- после всего этого команда make и получение файла nc;

- скопировал по ftp в uc7112plus в /mnt/sd/nc (у меня установлена SD карта);

- для того чтобы была как команда nc в командной строке, в файле /etc/profile добавил alias nc=/mnt/sd/nc/nc - это собственно путь к нашему файлу;

- ну и  установить разрешения для него (в сессии root конечно)... я применял mc для этих целей, но в командной строке есть и chmod.

Собственно после этого перезапустил устройство и вот:

www-data@Moxa:~$ nc                                                                                                                                                                             
nc 2.0                                                                                                                                                                                          
connect to somewhere:   nc [-options] hostname port(s)...                                                                                                                                       
listen for inbound:     nc -l [-options] [hostname [port]]                                                                                                                                      
options:
        -4              use IPv4 addresses
        -6              use IPv6 addresses
        -b              allow broadcasts
        -ePROG          program to exec after establishing connection
        -h              this cruft
        -i[SECS]        delay interval for lines sent and ports scanned
        -l              listen mode, for inbound connects
        -n              numeric-only IP addresses, no DNS
        -oFILE          hex dump of traffic
        -pPORT          local port number (useful when listening)
        -q[SECS]         quit SECS after EOF on stdin
        -r              randomize local and remote ports
        -sADDR          local source address
        -t              answer Telnet negotiation
        -u              UDP mode
        -v              verbose [repeat to be more verbose]
        -wSECS          timeout for connects and final net reads
        -z              zero-I/O mode [used for scanning]

When connecting, port numbers can be individual or inclusive ranges
in the form LO-HI

www-data@Moxa:~$ 

Теперь эта команда есть. Понимаю что грубо сделано, но всё же.

 

В приложенном архиве Makefile уже изменён и nc откомпилирован для IA240(1)LX и UC-7112LX-plus.

 

nc-2.0.zip

Link to comment
  • 1 month later...

Доброго времени суток Люди Добрые!

Собственно возник вопрос:

Как получать результат в bash-скрипт из NetCat. Тестировал вот это на Debian (это заготовка):

#!/bin/bash
#

_p1=$1
_p2=$2
_p3=$3
_nc=""
_url=""
_port=""


#определение принадлежности к MOXA
_un=$(uname -a | awk '{print($2)}')
case $_un in
	Moxa)
		_nc="/mnt/sd/nc/nc"
	;;
	*)
		_nc="nc"
	;;
esac

function _help()
{
	echo "help"
}

function _spp()
{
	str=$(echo -e $_port | sed "s/-/ /g")
	_startport=$(echo "$str" | awk '{print($1)}')
	_stopport=$(echo "$str" | awk '{print($2)}')
	while ( ((_startport <= _stopport)) )
	 do
	  str=""
	  str=$($_nc -vnz -4 $_url $_startport 2>&1)
	  res=$(echo "$str" | grep "succeeded!")
	  if [ "$res" != "" ]
	   then
	    echo "$_url $_startport"
	  fi
	  ((_startport += 1))
	done
}

case $1 in
	"help")
		_help
	;;
	"-ip")
		_url=$2
		case $3 in
			"-p")
				_port=$4
				if [ "$_port" == "" ]
				 then
				  echo "-p parametr ?"
				else
				 _spp
				fi
			;;
			*)
				echo "parametr ???"
			;;
		esac
	;;
	*)
		echo "use \"help\""
	;;
esac

понятно... в локальной сети:

igor@debian-i:~/coding/bash/nsite2$ ./spp.sh -ip 192.168.0.1 -p 21-80
192.168.0.1 23
192.168.0.1 53
192.168.0.1 80
igor@debian-i:~/coding/bash/nsite2$ 

И все бы не плохо но результат определял по слову в выводе

В Debian на ПК:

igor@debian-i:~/coding/bash/nsite2$ nc -vnz 192.168.0.1 80
Connection to 192.168.0.1 80 port [tcp/*] succeeded!
igor@debian-i:~/coding/bash/nsite2$ 

А вот тоже самое на UC-7112-Lx-plus:

www-data@Moxa:~$ nc -vnz 192.168.0.1 80
192.168.0.1:80 (Dlink-Router.Dlink) open
www-data@Moxa:~$ 

Так по какому принципу (правилу) определять, что порт открыт. Мучение испытывал мой старенький роутер (DIR-620) от ПК и MOXA.

Хочется что бы скрипт работал корректно и там и там

 

Заранее благодарен за ответ!

Спасибо!

Link to comment

 

Ох :huh:. Навряд ли вы найдёте тут ответ...

 

Если не трудно ткните меня носом на источник возможного ответа.

Буду благодарен!

 

Вот (тупость разумеется):

#!/bin/bash
#

_nc=""
_url=""
_port=""


#определение принадлежности к MOXA
_un=$(uname -a | awk '{print($2)}')
case $_un in
	Moxa)
		_nc="/mnt/sd/nc/nc"
	;;
	*)
		_nc="nc"
	;;
esac

function _help()
{
	echo "./spp.sh -ip <ip addr> -p <ip port>"
}

function _spp()
{
	str=$(echo -e $_port | sed "s/-/ /g")
	_startport=$(echo "$str" | awk '{print($1)}')
	_stopport=$(echo "$str" | awk '{print($2)}')
	while ( ((_startport <= _stopport)) )
	 do
	  str=""
	  str=$($_nc -vnz -4 $_url $_startport 2>&1)
	  res=$(echo "$str" | grep "succeeded!")
	  if [ "$res" == "" ]
	   then
	    res=$(echo "$str" | grep "open")
	  fi
	  if [ "$res" != "" ]
	   then
	    echo "$_url $_startport"
	  fi
	  ((_startport += 1))
	done
	echo "end"
}

case $1 in
	"help")
		_help
	;;
	"-ip")
		_url=$2
		case $3 in
			"-p")
				_port=$4
				if [ "$_port" == "" ]
				 then
				  echo "-p parametr ?"
				else
				 _spp
				fi
			;;
			*)
				echo "parametr ???"
			;;
		esac
	;;
	"-p")
		_port=$2
		case $3 in
			"-ip")
				_url=$4
				if [ "$_url" == "" ]
				 then
				  echo "-ip parametr ?"
				else
				 _spp
				fi
			;;
			*)
				echo "parametr ???"
			;;
		esac
	;;
	*)
		echo "use \"help\""
	;;
esac

Но работает и там и там. Понятно, что можно и nc -vnz <ip addr> <ip port start>-<ip port stop>, но вывод этого скрипта нужен для ввода в другой скрипт... а проверять вывод больше желания нет в другом(скрипте)... потому как надо конкретные данные.

 

Link to comment

Вообще-то всё по идиотски... вот это:

#определение принадлежности к MOXA
_un=$(uname -a | awk '{print($2)}')
case $_un in
	Moxa)
		_nc="/mnt/sd/nc/nc"
	;;
	*)
		_nc="nc"
	;;
esac

... тупо и по незнанию. Может как-то умнее и проще надо но... убрав вышеуказанное сделал так:

1) скопировал на SD в /mnt/sd/bin содержимое /usr/bin,

2) примонтировал:

#mount /usr/bin
mount /mnt/sd/bin /usr/bin

прямо в файле /etc/rc.d/rc.local

3) удалил ранее установленные алиасы в /etc/bashrc и где только поставил

И... вроде ничего лишнего и "nc" стал доступен из скриптов :)

 

Можно конечно и в /etc/fstab, но страшно... а шнурком консоли давно не пользуюсь. Только по SSH.

 

Что ж... буду убирать везде где можно хлам из UC-7112-LX-Plus

Link to comment

Я знал, что у вас получится :)

Спасибо за поддержку!

Только вот решил монтировать полностью /usr... а не по директориям. И "mc" туда же поместил. Совсем не надо "alias" стало. Не думал, что и "Perl" в родном /usr/bin есть... жаль, что я на нём не работаю (надо подумать).

 

Link to comment

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

...Должно получиться что-то наподобие "zenmap" точнее "nmap", только как автоматический круглосуточный скрипт. Правда для пробы пришлось оcтановить apache, иначе нагрузка (наличие ОЗУ) около 2 Мб... а без него аж 9 Мб.

изменил скрипт(заготовку):

#!/bin/bash
#

_nc="nc"
_url=""
_port=""
vdate="27.11.2017"
vversion="01.01"

#для MOXA
#"cannot connect"

#для Debian
#"No route to host"

function _help()
{
	echo "./spp.sh -ip <ip addr> -p <ip port>"
}

function __help()
{
	echo -e "spp <ip addr> <start_port-stop_port>\t - сканирование портов и адресов"
}

function _spp()
{
	
	#адреса
	str=$(echo -e $_url | sed "s/\./ /g")
	echo "str=$str"
	ip1=$(echo -e $str | awk '{print($1)}')
	ip2=$(echo -e $str | awk '{print($2)}')
	ip3=$(echo -e $str | awk '{print($3)}')
	ip4=$(echo -e $str | awk '{print($4)}')
	#
	ip1=$(echo -e $ip1 | sed "s/-/ /g")
	ip2=$(echo -e $ip2 | sed "s/-/ /g")
	ip3=$(echo -e $ip3 | sed "s/-/ /g")
	ip4=$(echo -e $ip4 | sed "s/-/ /g")
	#
	ip1_1=$(echo -e $ip1 | awk '{print($1)}')
	ip1_2=$(echo -e $ip1 | awk '{print($2)}')
	if [ "$ip1_2" == "" ]; then
	ip1_2=$ip1_1
	fi
	ip2_1=$(echo -e $ip2 | awk '{print($1)}')
	ip2_2=$(echo -e $ip2 | awk '{print($2)}')
	if [ "$ip2_2" == "" ]; then
	ip2_2=$ip2_1
	fi
	ip3_1=$(echo -e $ip3 | awk '{print($1)}')
	ip3_2=$(echo -e $ip3 | awk '{print($2)}')
	if [ "$ip3_2" == "" ]; then
	ip3_2=$ip3_1
	fi
	ip4_1=$(echo -e $ip4 | awk '{print($1)}')
	ip4_2=$(echo -e $ip4 | awk '{print($2)}')
	if [ "$ip4_2" == "" ]; then
	ip4_2=$ip4_1
	fi
	_startURL="$ip1_1.$ip2_1.$ip3_1.$ip4_1"
	_stopURL="$ip1_2.$ip2_2.$ip3_2.$ip4_2"
	echo "Start URL:$_startURL Stop URL:$_stopURL"
	#порты
	str=$(echo -e $_port | sed "s/-/ /g")
	_startport=$(echo "$str" | awk '{print($1)}')
	_stopport=$(echo "$str" | awk '{print($2)}')
	if [ "$_stopport" == "" ]; then
	 _stopport=$_startport
	fi
	#
	while( ((ip1_1 <= ip1_2)) ); do
	 while( ((ip2_1 <= ip2_2)) ); do
	  while( ((ip3_1 <= ip3_2)) ); do
	   while( ((ip4_1 <= ip4_2)) ); do
	    ((_cntport=_startport))
	    _startURL="$ip1_1.$ip2_1.$ip3_1.$ip4_1"
	    #echo "URL=$_startURL Port=$_cntport"
	    while ( ((_cntport <= _stopport)) ); do
	     str=$(nc -vnz $_startURL $_cntport 2>&1)
	     #echo "--$str"
	     res=$(echo "$str" | grep "succeeded!")
	     if [ "$res" == "" ]; then
	      res=$(echo "$str" | grep "open")
	     fi
	     if [ "$res" != "" ]; then
	      echo "$_startURL $_cntport"
	     fi
	     res=$(echo "$str" | grep "No route to host")
	     if [ "$res" != "" ]; then
	      break
	     fi
	      res=$(echo "$str" | grep "cannot connect")
	     if [ "$res" != "" ]; then
	      break
	     fi
	     ((_cntport += 1))
	    done
	    ((ip4_1 += 1))
           done
           ((ip3_1 += 1))
          done
	  ((ip2_1 += 1))
	 done
	 ((ip1_1 += 1))
	done
	echo "end"
}

case $1 in
	"help")
		_help
	;;
	"--help")
		__help
	;;
	"version")
		echo -e "******\tspp.sh Date:$vdate Version:$vversion\t******"
	;;
	"-ip")
		_url=$2
		case $3 in
			"-p")
				_port=$4
				if [ "$_port" == "" ]
				 then
				  echo "-p parametr ?"
				else
				 _spp
				fi
			;;
			*)
				echo "parametr ???"
			;;
		esac
	;;
	"-p")
		_port=$2
		case $3 in
			"-ip")
				_url=$4
				if [ "$_url" == "" ]
				 then
				  echo "-ip parametr ?"
				else
				 _spp
				fi
			;;
			*)
				echo "parametr ???"
			;;
		esac
	;;
	*)
		echo "use \"help\""
	;;
esac

И вот что вышло в домашней локальной сети:

gor@debian-i:~/coding/bash/nsite3$ ./wnsite.sh spp 192.168.0.1-254 21-80
URL:  192.168.0.1-254
Port: 21-80
str=192 168 0 1-254
Start URL:192.168.0.1 Stop URL:192.168.0.254
192.168.0.1 23
192.168.0.1 53
192.168.0.1 80
192.168.0.31 21
192.168.0.31 22
192.168.0.31 23
192.168.0.60 22
192.168.0.67 21
192.168.0.67 22
192.168.0.67 80
192.168.0.240 21
192.168.0.240 22
192.168.0.240 23
192.168.0.241 21
192.168.0.241 22
192.168.0.241 23
end
igor@debian-i:~/coding/bash/nsite3$ 

Правда приведённый скрипт запускается другим скриптом (wnsite.sh)

Link to comment

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

...Должно получиться что-то наподобие "zenmap" точнее "nmap", только как автоматический круглосуточный скрипт. Правда для пробы пришлось оcтановить apache, иначе нагрузка (наличие ОЗУ) около 2 Мб... а без него аж 9 Мб.

изменил скрипт(заготовку):

#!/bin/bash
#

_nc="nc"
_url=""
_port=""
vdate="27.11.2017"
vversion="01.01"

#для MOXA
#"cannot connect"

#для Debian
#"No route to host"

function _help()
{
	echo "./spp.sh -ip <ip addr> -p <ip port>"
}

function __help()
{
	echo -e "spp <ip addr> <start_port-stop_port>\t - сканирование портов и адресов"
}

function _spp()
{
	
	#адреса
	str=$(echo -e $_url | sed "s/\./ /g")
	echo "str=$str"
	ip1=$(echo -e $str | awk '{print($1)}')
	ip2=$(echo -e $str | awk '{print($2)}')
	ip3=$(echo -e $str | awk '{print($3)}')
	ip4=$(echo -e $str | awk '{print($4)}')
	#
	ip1=$(echo -e $ip1 | sed "s/-/ /g")
	ip2=$(echo -e $ip2 | sed "s/-/ /g")
	ip3=$(echo -e $ip3 | sed "s/-/ /g")
	ip4=$(echo -e $ip4 | sed "s/-/ /g")
	#
	ip1_1=$(echo -e $ip1 | awk '{print($1)}')
	ip1_2=$(echo -e $ip1 | awk '{print($2)}')
	if [ "$ip1_2" == "" ]; then
	ip1_2=$ip1_1
	fi
	ip2_1=$(echo -e $ip2 | awk '{print($1)}')
	ip2_2=$(echo -e $ip2 | awk '{print($2)}')
	if [ "$ip2_2" == "" ]; then
	ip2_2=$ip2_1
	fi
	ip3_1=$(echo -e $ip3 | awk '{print($1)}')
	ip3_2=$(echo -e $ip3 | awk '{print($2)}')
	if [ "$ip3_2" == "" ]; then
	ip3_2=$ip3_1
	fi
	ip4_1=$(echo -e $ip4 | awk '{print($1)}')
	ip4_2=$(echo -e $ip4 | awk '{print($2)}')
	if [ "$ip4_2" == "" ]; then
	ip4_2=$ip4_1
	fi
	_startURL="$ip1_1.$ip2_1.$ip3_1.$ip4_1"
	_stopURL="$ip1_2.$ip2_2.$ip3_2.$ip4_2"
	echo "Start URL:$_startURL Stop URL:$_stopURL"
	#порты
	str=$(echo -e $_port | sed "s/-/ /g")
	_startport=$(echo "$str" | awk '{print($1)}')
	_stopport=$(echo "$str" | awk '{print($2)}')
	if [ "$_stopport" == "" ]; then
	 _stopport=$_startport
	fi
	#
	while( ((ip1_1 <= ip1_2)) ); do
	 while( ((ip2_1 <= ip2_2)) ); do
	  while( ((ip3_1 <= ip3_2)) ); do
	   while( ((ip4_1 <= ip4_2)) ); do
	    ((_cntport=_startport))
	    _startURL="$ip1_1.$ip2_1.$ip3_1.$ip4_1"
	    #echo "URL=$_startURL Port=$_cntport"
	    while ( ((_cntport <= _stopport)) ); do
	     str=$(nc -vnz $_startURL $_cntport 2>&1)
	     #echo "--$str"
	     res=$(echo "$str" | grep "succeeded!")
	     if [ "$res" == "" ]; then
	      res=$(echo "$str" | grep "open")
	     fi
	     if [ "$res" != "" ]; then
	      echo "$_startURL $_cntport"
	     fi
	     res=$(echo "$str" | grep "No route to host")
	     if [ "$res" != "" ]; then
	      break
	     fi
	      res=$(echo "$str" | grep "cannot connect")
	     if [ "$res" != "" ]; then
	      break
	     fi
	     ((_cntport += 1))
	    done
	    ((ip4_1 += 1))
           done
           ((ip3_1 += 1))
          done
	  ((ip2_1 += 1))
	 done
	 ((ip1_1 += 1))
	done
	echo "end"
}

case $1 in
	"help")
		_help
	;;
	"--help")
		__help
	;;
	"version")
		echo -e "******\tspp.sh Date:$vdate Version:$vversion\t******"
	;;
	"-ip")
		_url=$2
		case $3 in
			"-p")
				_port=$4
				if [ "$_port" == "" ]
				 then
				  echo "-p parametr ?"
				else
				 _spp
				fi
			;;
			*)
				echo "parametr ???"
			;;
		esac
	;;
	"-p")
		_port=$2
		case $3 in
			"-ip")
				_url=$4
				if [ "$_url" == "" ]
				 then
				  echo "-ip parametr ?"
				else
				 _spp
				fi
			;;
			*)
				echo "parametr ???"
			;;
		esac
	;;
	*)
		echo "use \"help\""
	;;
esac

И вот что вышло в домашней локальной сети:

gor@debian-i:~/coding/bash/nsite3$ ./wnsite.sh spp 192.168.0.1-254 21-80
URL:  192.168.0.1-254
Port: 21-80
str=192 168 0 1-254
Start URL:192.168.0.1 Stop URL:192.168.0.254
192.168.0.1 23
192.168.0.1 53
192.168.0.1 80
192.168.0.31 21
192.168.0.31 22
192.168.0.31 23
192.168.0.60 22
192.168.0.67 21
192.168.0.67 22
192.168.0.67 80
192.168.0.240 21
192.168.0.240 22
192.168.0.240 23
192.168.0.241 21
192.168.0.241 22
192.168.0.241 23
end
igor@debian-i:~/coding/bash/nsite3$ 

Правда приведённый скрипт запускается другим скриптом (wnsite.sh)

 

...Простите - исправление. Дело в том, что упомянутый "nc" в отличии от того, что в Debian 7 сообщение "cannot connect" вывводит и при отсутствии хоста, как такового... так и при отсутствии открытого порта.

В то время как в Debian сообщение "No route to host" присутствует только при отсутствии хоста... и пинг по этому адресу не проходит. Для ускорения надо применить  ключ "-w <time>" вот так:

str=$(nc -vnz -w 1 $_startURL $_cntport 2>&1)

Работа продолжается...

 

Link to comment

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

... и вот что вышло (кусок bash скрипта, ранее рассматриваемого):

#!/bin/bash
#

vdate="30.11.2017"
vversion="01.01"

_nc="nc"
_url=""
_port=""
_file_res=""
_file_res_def="/home/httpd/ramdisk/spp.dat"
((_memmin=500))
_sppfp1URL=""
_sppfp1port=""

#для MOXA
#"cannot connect"

#для Debian
#"No route to host"

function _help()
{
	echo "./spp.sh -ip <ip addr> -p <ip port>                - сканирование портов и адресов"
	echo "./spp.sh -ip <ip addr> -p <ip port> -f <file_res>  - сканирование несколькими с записью в файл"
	echo "./spp.sh -ip <ip addr> -p <ip port> -fp <file_res> - сканирование несколькими потоками с записью в файл"
}

function __help()
{
	echo -e "spp <ip addr> <start_port-stop_port>\t - сканирование портов и адресов"
	echo -e "spps <ip addr> <ip port> <file_res>\t  - сканирование несколькими потоками с записью в файл"
}

function _sppfp1()
{
	str=$(nc -vnz -w 1 $_sppfp1URL $_sppfp1port 2>&1)
	res=$(echo "$str" | grep "succeeded!")
	if [ "$res" == "" ]; then
	 res=$(echo "$str" | grep "open")
	fi
	if [ "$res" != "" ]; then
	 echo "$_sppfp1URL $_sppfp1port" >> "$_file_res"
	fi
}

function _sppfp()
{
	(( pcnt = 0 ))
	echo "" > "$_file_res_def"
	#адреса
	str=$(echo -e $_url | sed "s/\./ /g")
	echo "str=$str"
	ip1=$(echo -e $str | awk '{print($1)}')
	ip2=$(echo -e $str | awk '{print($2)}')
	ip3=$(echo -e $str | awk '{print($3)}')
	ip4=$(echo -e $str | awk '{print($4)}')
	#
	ip1=$(echo -e $ip1 | sed "s/-/ /g")
	ip2=$(echo -e $ip2 | sed "s/-/ /g")
	ip3=$(echo -e $ip3 | sed "s/-/ /g")
	ip4=$(echo -e $ip4 | sed "s/-/ /g")
	#
	ip1_1=$(echo -e $ip1 | awk '{print($1)}')
	ip1_2=$(echo -e $ip1 | awk '{print($2)}')
	if [ "$ip1_2" == "" ]; then
	ip1_2=$ip1_1
	fi
	ip2_1=$(echo -e $ip2 | awk '{print($1)}')
	ip2_2=$(echo -e $ip2 | awk '{print($2)}')
	if [ "$ip2_2" == "" ]; then
	ip2_2=$ip2_1
	fi
	ip3_1=$(echo -e $ip3 | awk '{print($1)}')
	ip3_2=$(echo -e $ip3 | awk '{print($2)}')
	if [ "$ip3_2" == "" ]; then
	ip3_2=$ip3_1
	fi
	ip4_1=$(echo -e $ip4 | awk '{print($1)}')
	ip4_2=$(echo -e $ip4 | awk '{print($2)}')
	if [ "$ip4_2" == "" ]; then
	ip4_2=$ip4_1
	fi
	_startURL="$ip1_1.$ip2_1.$ip3_1.$ip4_1"
	_stopURL="$ip1_2.$ip2_2.$ip3_2.$ip4_2"
	echo "Start URL:$_startURL Stop URL:$_stopURL"
	#порты
	str=$(echo -e $_port | sed "s/-/ /g")
	_startport=$(echo "$str" | awk '{print($1)}')
	_stopport=$(echo "$str" | awk '{print($2)}')
	if [ "$_stopport" == "" ]; then
	 _stopport=$_startport
	fi
	#
	while( ((ip1_1 <= ip1_2)) ); do
	 while( ((ip2_1 <= ip2_2)) ); do
	  while( ((ip3_1 <= ip3_2)) ); do
	   while( ((ip4_1 <= ip4_2)) ); do
	    ((_cntport=_startport))
	    _startURL="$ip1_1.$ip2_1.$ip3_1.$ip4_1"
	    while ( ((_cntport <= _stopport)) ); do
	     mem=$(free | awk '/Mem:/ {print($4)}')
	     echo "mem: $mem"
	     if ( (( mem > _memmin )) ); then
	      _sppfp1URL=$_startURL
	      _sppfp1port=$_cntport
	      _sppfp1 &
	      ((_cntport += 1))
	     fi
	    done
	    ((ip4_1 += 1))
           done
           ((ip3_1 += 1))
          done
	  ((ip2_1 += 1))
	 done
	 ((ip1_1 += 1))
	done
	echo "end"
}

Работа по нескольким потокам... количество зависит от размера свободной памяти. Ограничение по нижнему значению выбрал 500 кБ. И... ничего себе довольно шустро, относительно конечно, работает. Для работы перед этим остановил apache.

 

Вот отчёт занятости по "top":

Load average: 4.58 4.67 3.37 3/57 1731
  PID  PPID USER     STAT   VSZ %MEM %CPU COMMAND
22976   134 www-data S     2152   7%   8% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 
  135   131 www-data S     6528  22%   4% /bin/sshd -i 
12253   136 www-data R     2316   8%   3% top 
 1679  1677 www-data S     2152   7%   1% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 
  129    77 root     S     6672  22%   0% /bin/sshd -i 
  137    77 root     S     6672  22%   0% /bin/sshd -i 
  131    77 root     S     6672  22%   0% /bin/sshd -i 
  139   137 www-data S     6616  22%   0% /bin/sshd -i 
  133   129 www-data S     6528  22%   0% /bin/sshd -i 
  134   133 www-data S     2496   8%   0% -sh 
  140   139 www-data S     2492   8%   0% -sh 
  136   135 www-data S     2492   8%   0% -sh 
 1727  1725 www-data R     2228   7%   0% awk /Mem:  {print($4)} 
 1638 22976 www-data S     2152   7%   0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 
 1719 22976 www-data S     2152   7%   0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 
 1725 22976 www-data S     2152   7%   0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 
 1621 22976 www-data S     2152   7%   0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 
 1655 22976 www-data S     2152   7%   0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 
 1660  1655 www-data S     2152   7%   0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 
 1669 22976 www-data S     2152   7%   0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 
 1677 22976 www-data S     2152   7%   0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 
 1694 22976 www-data S     2152   7%   0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 
 1702 22976 www-data S     2152   7%   0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 
 1623  1621 www-data S     2152   7%   0% [spp.sh]
 1695  1694 www-data S     2152   7%   0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 
 1707  1702 www-data S     2152   7%   0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 
 1723  1719 www-data S     2152   7%   0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 
 1643  1638 www-data S     2152   7%   0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 
 1671  1669 www-data S     2152   7%   0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 
  113     1 root     S     2084   7%   0% /bin/sh --login 
 1627  1623 www-data S     1564   5%   0% [nc]
 1664  1660 www-data S     1564   5%   0% nc -vnz -w 1 192.168.0.8 9086 
 1672  1671 www-data S     1564   5%   0% nc -vnz -w 1 192.168.0.8 9087 
 1700  1695 www-data S     1564   5%   0% nc -vnz -w 1 192.168.0.8 9089 
 1714  1707 www-data S     1564   5%   0% nc -vnz -w 1 192.168.0.8 9090 
 1644  1643 www-data S     1564   5%   0% nc -vnz -w 1 192.168.0.8 9085 
 1686  1679 www-data S     1564   5%   0% nc -vnz -w 1 192.168.0.8 9088 
 1728  1723 www-data R     1336   4%   0% nc -vnz -w 1 192.168.0.8 9091 
   77     1 root     S     1284   4%   0% /bin/inetd 
  118     1 root     S     1280   4%   0% /bin/snmpd 
   49     1 root     S     1252   4%   0% dhcpcd eth0 
    1     0 root     S     1248   4%   0% init [3]  
   85     1 bin      S     1220   4%   0% /bin/portmap 
  122     1 root     S     1200   4%   0% /bin/reportip 
www-data@Moxa:~$ 

Не "Zenmap" конечно, что на PC, но всё же "скаблить" сеть уже реально можно...

С адресами 192.168.0.1-254 и диапазоном портов 9000-9100... не на слуху понятное дело... но уходит уже не день, как просто "ping".

Устройство UC-7112-LX-Plus в моём применении в работе сутками... удачная разработка инженеров и производителей. Вот бы ОЗУ побольше бы.

Link to comment

Собствено короткие испытания (прервано по нехватке времени ожидания):

ЗАДАНИЕ:

             IP адреса с 192.168.0.1 по 192.168.0.254

             IP порты с 21 по 80 для каждого из адресов.

:::::

старт в 14:21; прерывание работы по CNTRL+C в 16:39.

Отчёт по файлу в RAM-диске:

www-data@Moxa:~$ cat /home/httpd/ramdisk/spp.dat

192.168.0.1 23
192.168.0.1 80
192.168.0.3 21
192.168.0.4 53
192.168.0.8 23
192.168.0.8 80
192.168.0.9 23
192.168.0.9 80
192.168.0.10 23
192.168.0.10 80
192.168.0.11 23
192.168.0.11 80
192.168.0.12 23
192.168.0.12 80
192.168.0.13 80
192.168.0.14 22
192.168.0.14 23
192.168.0.14 80
192.168.0.16 80
192.168.0.20 80
192.168.0.22 80
192.168.0.23 80
192.168.0.26 21
192.168.0.26 22
192.168.0.26 23
192.168.0.28 80
192.168.0.29 80
192.168.0.34 80
192.168.0.35 80
192.168.0.36 80
192.168.0.39 21
192.168.0.39 80
192.168.0.40 21
192.168.0.40 80
192.168.0.41 21
192.168.0.41 80
192.168.0.42 21
192.168.0.42 80
192.168.0.43 80
192.168.0.46 80
192.168.0.47 80
192.168.0.49 21
192.168.0.49 23
192.168.0.49 80
192.168.0.53 42
192.168.0.53 53
192.168.0.55 21
192.168.0.55 23
192.168.0.67 80
192.168.0.85 23
192.168.0.85 80
www-data@Moxa:~$ 

В процессе пробы периодически просматривался отчёт по "top"  и содержимое файла отчёта по "cat". В процессе всего теста непрерывное подключенное состояние по SSH тремя соединениями. WEB сервер "apache" остановлен.

Сосбственная оценка этому - "СОЙДЁТ"

 

Link to comment

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

...Если вдруг кого-то заинтересовало, то вот пример применения "nc":

www-data@Moxa:~/nsite3$ ./spp.sh help                         
./spp.sh -ip <ip addr> -p <ip port>                - сканирование портов и адресов
./spp.sh -ip <ip addr> -p <ip port> -f <file_res>  - сканирование с записью в файл
                                                     если файл <file_res> не указан, то сохранение
                                                     в файл "/home/httpd/ramdisk/spp.dat"
./spp.sh -ip <ip addr> -p <ip port> -fp <file_res> - сканирование несколькими потоками с записью в файл
                                                     если файл <file_res> не указан, то сохранение
                                                     в файл "/home/httpd/ramdisk/spp.dat"
www-data@Moxa:~/nsite3$ 

Точнее скрипт, в котором используется эта утилита. Понятное дело она не доведена до ума.

пример:

www-data@Moxa:~/nsite3$ ./spp.sh -ip 192.168.0.1-254 -p 21-80 -fp
str=192 168 0 1-255
Start URL:192.168.0.1 Stop URL:192.168.0.254
end

имя файла не указал... так, что сохранение отчёта будет в "/home/httpd/ramdisk/anshttp.dat".

Так же понятно, что проверены будут хосты с адреса 192.168.0.1 по 192.168.0.254. И соответственно порты с 21 по 80 на каждом из них.

 

Пример вызова этого скрипта из другого скрипта (wnsite.sh):

#многопоточный поиск портов по списку адресов IP4 с записью в файл
function _spps()
{
	echo "URL:  $_url"
	echo "Port: $_port"
	str=$(./spp.sh -ip $_url -p $_port -fp)
	echo -e "$str"
}

А отчёты применены ранее.

 

Кроме того можно читать содержимое WEB страниц на серверах... и... в Inetnet тоже:

#GET запрос
function _get()
{
	_met="GET $_path HTTP/1.0\r\n"
	_host="Host: $_url\r\n"
	_agent="User-Agent: $_User_Agent\r\n"
	_snd="$_met$_host$_agent$_Authorization$_Proxy_Authorization$_Proxy_Connection$_Content_type\r\n\r\n"
	rcv=$(echo -e "$_snd" | nc -4 "$_url" "$_port")
	echo -e "$rcv"
}

Ну и конечно построить автоматический "web-браузер" конечно... формируя запросы и анализируя ответы (пример):

www-data@Moxa:~/nsite3$ ./wnsite.sh head_http www.google.ru
url:www.google.ru port:80
HTTP/1.0 200 OK
Date: Fri, 01 Dec 2017 22:54:26 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=UTF-8
P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Set-Cookie: 1P_JAR=2017-12-01-22; expires=Sun, 31-Dec-2017 22:54:26 GMT; path=/; domain=.google.ru
Set-Cookie: NID=118=Zw1AJcJux5jIiFp3Hb2aoVWE_pgb2h8ciC0b9jsZcD1jtUOYhiMb663bBOOpkZ0bBmBLV6Dbe5JT6h3DrOBNogJ0pxORDjEL6g-BHSh4xh32NE1r544LDxGQUMhFKTHu; expires=Sat, 02-Jun-2018 22:54:26 GMT; path=/; domain=.google.ru; HttpOnly
Accept-Ranges: none
Vary: Accept-Encoding

******* anscode=200
***************** Ответ на запрос ******************************
Результат               : 200 - Ok
Cache-Control           : private, max-age=0
Date                    : Fri, 01 Dec 2017 22:54:26 GMT
P3P                     : CP="This is not a P3P policy! See g.co/p3phelp for more info."
Server                  : gws
X-XSS-Protection        : 1; mode=block
Set-Cookie              : 1P_JAR=2017-12-01-22; expires=Sun, 31-Dec-2017 22:54:26 GMT; path=/; domain=.google.ru
NID=118=Zw1AJcJux5jIiFp3Hb2aoVWE_pgb2h8ciC0b9jsZcD1jtUOYhiMb663bBOOpkZ0bBmBLV6Dbe5JT6h3DrOBNogJ0pxORDjEL6g-BHSh4xh32NE1r544LDxGQUMhFKTHu; expires=Sat, 02-Jun-2018 22:54:26 GMT; path=/; domain=.google.ru; HttpOnly
Accept-Ranges           : none
Vary                    : Accept-Encoding
Content-Type            : text/html; charset=UTF-8
****************************************************************
www-data@Moxa:~/nsite3$

Утилита и простая, и довольно мощная!

spp.sh.zip

Link to comment
  • 4 months later...

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

Вот ещё маленький кусочек... Как то довелось применяя NC попробовать сделать "автомат", который сам производит подключение к сайту... даже через прокси. И вез Base 64 не обошлось:

base64.zip

Для кодирования и декодирования в скрипте BASH. Сделан на Си для IA240(241)/UC-7112-LX-Plus. При запуске без параметров:

www-data@pi01:~/ramdisk/nsite3$ ./base64
Необходимы параметры!

Первое, что приходит в голову это "help"

www-data@pi01:~/ramdisk/nsite3$ ./base64 help
не определено! Примените параметрп"--help" для подсказки.
www-data@pi01:~/ramdisk/nsite3$ ./base64 --help

параметры:
--help        исходная подсказка
--encode <instr>    кодирование, где <instr> исходная строка.
                    на выходе будет кодированная строка в Base 64.
--decode <instr>    декодирование, где <instr> исходная кодированная строка в Base 64.
                    на выходе будет декодированная строка.
-e <instr>          то же самое, что и --encode
-d <instr>          то же самое, что и --decode

www-data@pi01:~/ramdisk/nsite3$ 

Не добавляет перевод строки и т.п., потому как применяется для скрипта

www-data@pi01:~/ramdisk/nsite3$ ./base64 -e 123
MTIzwww-data@pi01:~/ramdisk/nsite3$ ./base64 -d MTIz
123www-data@pi01:~/ramdisk/nsite3$ ./base64 -e MTIz
TVRJeg==www-data@pi01:~/ramdisk/nsite3$ ./base64 -d MTIz
123www-data@pi01:~/ramdisk/nsite3$

ну и теперь получается работать с сайтами через прокси с авторизацией.

Link to comment
  • 8 months later...

Сказать откровенно, то nc маловато будет. А по сему практически не умея собирать (только учусь) что-то из исходников... всё ж таки собрал

bin.zip

этот curl

www-data@Moxa:~/ramdisk$ curl -V    
curl 7.31.0 (/usr/local/arm-linux/bin/arm-linux-gcc) libcurl/7.31.0 OpenSSL/0.9.8i
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smtp smtps telnet tftp 
Features: Largefile NTLM NTLM_WB SSL 
www-data@Moxa:~/ramdisk$ 

для его работы надо скопировать libcurl.so.4.3.0 в /lib и создать на него символьную ссылку libcurl.so.4 согласно этому например

http://tftf.ru/stati/linux/sozdat_simvolicheskuyu_ssylku_na_papku_fajl/

а файл curl лучше положить в /usr/bin понятно если это требуется.

А сейчас ввиду того, что памяти у UC-7112-Lx-Plus очень мало имею желание ещё реализовать и smbclient на устройстве. Пусть само устройство имеет доступ к какому-нибудь локальному ресурсу по сети для сохранения промежуточных файлов работы ну и/или так просто.

Саму сборку не выкладываю - стыдно за неграмотность.

но вот работа curl (пример) - через прокси

www-data@Moxa:~/ramdisk$ curl -I -x www-data:www-data@192.168.0.234:8080 http://192.168.1.210                
HTTP/1.0 302 Object Moved
Date: Mon, 24 Dec 2018 06:32:13 GMT
Server: Microsoft-WinCE/5.0
Location: /remoteadmin/
Content-Type: text/html
Content-Length: 125
Connection: Close
Proxy-Connection: Close

www-data@Moxa:~/ramdisk$ 

Как раз через прокси с паролем в другую локальную подсеть. Прокси тоже локальный и в интернет не выходит.

А так с --location (то же через прокси):

www-data@Moxa:~$ curl -I --location -x www-data:www-data@192.168.0.234:8080 http://192.168.1.210
HTTP/1.0 302 Object Moved
Date: Wed, 26 Dec 2018 00:56:37 GMT
Server: Microsoft-WinCE/5.0
Location: /remoteadmin/
Content-Type: text/html
Content-Length: 125
Connection: Close
Proxy-Connection: Close

HTTP/1.0 200 OK
Date: Wed, 26 Dec 2018 00:56:37 GMT
Server: Microsoft-WinCE/5.0
Content-length: 6760
Pragma: no-cache
Cache-Control: no-cache
Content-type: text/html
Connection: Keep-Alive
Proxy-Connection: Keep-Alive

www-data@Moxa:~$ 

 

А так просто скачиваем страничку из контроллера (и опять через прокси)

www-data@Moxa:~$ curl --location -x www-data:www-data@192.168.0.234:8080 http://192.168.1.210   
<!--
Copyright (c) Microsoft Corporation.  All rights reserved.
-->
<!--
Use of this source code is subject to the terms of the Microsoft end-user
license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
If you did not accept the terms of the EULA, you are not authorized to use
this source code. For a copy of the EULA, please see the LICENSE.RTF on your
install media.
-->
<script language="javascript">
var g_PASSWORD_PasswordSet = "1";
</script>
 
<script language="javascript">
var g_HOSTNAME_Name = "UNO-1019_1";
</script>
 
<script language="javascript">
if('undefined' == typeof(g_NETWORK_PROTOCOLSTOBINDTO)) {g_NETWORK_PROTOCOLSTOBINDTO = new Array();}
 g_NETWORK_PROTOCOLSTOBINDTO["ASYNCMAC1"] = "*";
 g_NETWORK_PROTOCOLSTOBINDTO["PPTP1"] = "*";
 g_NETWORK_PROTOCOLSTOBINDTO["L2TP1"] = "*";
 g_NETWORK_PROTOCOLSTOBINDTO["PPPOE1"] = "*";
 g_NETWORK_PROTOCOLSTOBINDTO["DM9CE1"] = "*";
 g_NETWORK_PROTOCOLSTOBINDTO["DM9CETWO1"] = "*";
if('undefined' == typeof(g_NETWORK_DHCP)) {g_NETWORK_DHCP = new Array();}
 g_NETWORK_DHCP["DM9CETWO1"] = "DISABLED";
if('undefined' == typeof(g_NETWORK_GATEWAY)) {g_NETWORK_GATEWAY = new Array();}
 g_NETWORK_GATEWAY["DM9CETWO1"] = "";
if('undefined' == typeof(g_NETWORK_WINS2)) {g_NETWORK_WINS2 = new Array();}
 g_NETWORK_WINS2["DM9CETWO1"] = "";
if('undefined' == typeof(g_NETWORK_WINS1)) {g_NETWORK_WINS1 = new Array();}
 g_NETWORK_WINS1["DM9CETWO1"] = "";
if('undefined' == typeof(g_NETWORK_DNS2)) {g_NETWORK_DNS2 = new Array();}
 g_NETWORK_DNS2["DM9CETWO1"] = "";
if('undefined' == typeof(g_NETWORK_DNS1)) {g_NETWORK_DNS1 = new Array();}
 g_NETWORK_DNS1["DM9CETWO1"] = "";
if('undefined' == typeof(g_NETWORK_AUTODNS)) {g_NETWORK_AUTODNS = new Array();}
 g_NETWORK_AUTODNS["DM9CETWO1"] = "1";
if('undefined' == typeof(g_NETWORK_Subnet)) {g_NETWORK_Subnet = new Array();}
 g_NETWORK_Subnet["DM9CETWO1"] = "255.255.255.0";
if('undefined' == typeof(g_NETWORK_MACAddress)) {g_NETWORK_MACAddress = new Array();}
 g_NETWORK_MACAddress["DM9CETWO1"] = "00-d0-c9-be-7e-45";
if('undefined' == typeof(g_NETWORK_IPAddress)) {g_NETWORK_IPAddress = new Array();}
 g_NETWORK_IPAddress["DM9CETWO1"] = "192.168.1.210";
</script>


<noscript><body bgcolor=#d6dff5><center><b><font color=#6487dc>Javascript support is required to display this page</font></b></center></body></noscript>
<script src="ParsedGeneralUtils.js" language="javascript"></script><script src="../remoteadminimages/GeneralUtils.js" language="javascript"></script>
<script language="javascript">

var l_ShowingPasswords = false;
// Local variables (NOTE: make sure these match the values in changepassword.htm)
var l_PasswordMinLen = 3;
var l_PasswordMaxLen = 16;


        function ShowPasswordErrors() 
        {
                if(window.g_PASSWORD_SuccessfullyChanged) 
                {
                        return new String("<font color=#0000FF>Successfully changed password!</font>");
                }
                if(window.g_PASSWORD_Mismatch) 
                {
                        return new String("<font color=#FF0000>Password mismatch! -- please try again</font>");
                } 
                if(window.g_PASSWORD_InvalidPassword) 
                {
                        return new String("<font color=#FF0000>Invalid Password! -- please try again</font>");
                }
                return new String("");
        }

        function ShowBoth()
        {
                ShowHostNameConfig();
        }

        function ShowHostNameConfig()
        {
                // Device Name
                BuildBoxHeader();
                document.write("<table class=boxInside>");
                document.write("<TR><TD class=cellLtColor>Device Name:</TD></TR>");
                document.write("<TR><TD><INPUT type=text onkeyup=enableApply() name=\"HOSTNAME_Name\" value=\"" + g_HOSTNAME_Name + "\"></TD></TR>");
                document.write("<TR><TD><INPUT type=hidden name=a_REMOTEUTILS_NOBACKUPREGISTRY_OOBE value=\"0\"></TD></TR>");
                document.write("</table>");
                BuildBoxFooter();
                AddApplyCancel();

                AddErrorDisplay();
                ClearError();
        }

        function ShowPasswordConfig()
        {
                l_ShowingPasswords = true;
                // Device Password
                BuildBoxHeader();
                document.write("<table class=boxInside>");
                document.write("<TR><TD COLSPAN=2 class=cellLtColor>Device Log On: " + ShowPasswordErrors() + "</TD></TR>");
                document.write("<TR><TD COLSPAN=2>To access the device, type your password and then click <B>Log On</B>. Your base station password is case sensitive.</TD></TR>");

                if(window.g_PASSWORD_PasswordSet) {
                        document.write("<TR>");
                        document.write("   <TD>Old Password:</TD>");
                        document.write("   <TD><input type=\"password\" onkeyup=enableApply() name=\"PASSWORD_PWDOLD\" size=\"20\"></TD>");
                        document.write("</TR>");
                }
                document.write("<TR>");
                document.write("   <TD>Password:</TD>");
                document.write("   <TD><input type=\"password\" onkeyup=enableApply() name=\"PASSWORD_PWD\" size=\"20\"></TD>");
                document.write("</TR>");

                document.write("<TR>");
                document.write("   <TD>Verification:</TD>");
                document.write("   <TD><input type=\"password\" onkeyup=enableApply() name=\"PASSWORD_PWDVERIFY\" size=\"20\"></TD>");
                document.write("</TR>");

                document.write("<TR>");
                document.write("    <TD COLSPAN=2><input type=hidden value=ENABLED name=PASSWORD_SECURITYLEVEL></TD>");
                document.write("<TR>");

                document.write("</table>");
                BuildBoxFooter();
                AddApplyCancel();

                AddErrorDisplay();
                ClearError();

        }

function SubmitHandler(SubmitVar)
{
        var bOK = true;
        ClearError();

        var form = FindObject("EditForm");

        if (l_ShowingPasswords)
        {
                if(window.g_PASSWORD_PasswordSet) {
                        bOK = ValidatePW(form.PASSWORD_PWDOLD, l_PasswordMinLen, l_PasswordMaxLen);
                }

                bOK &= ValidatePW(form.PASSWORD_PWD, l_PasswordMinLen, l_PasswordMaxLen);
                bOK &= ValidatePW(form.PASSWORD_PWDVERIFY, l_PasswordMinLen, l_PasswordMaxLen);

                if (form.PASSWORD_PWD.value != form.PASSWORD_PWDVERIFY.value)
                {
                        FlagError(form.PASSWORD_PWD, "PWDontMatch");
                        FlagError(form.PASSWORD_PWDVERIFY, "PWDontMatch");
                        bOK = false;
                }
        } else {
                bOK = ValidateHostName("HOSTNAME_NAME");
        }

        // If everything passed then pass this onto the global handler to submit
        if (true == bOK)
        {
                GlobalSubmitHandler(SubmitVar);
                return true;
        }else{
                FocusFirstError();
                return false;
        }
}



</script>
<html>
        <script language="javascript">
                document.write("<form ID=EditForm METHOD=post onsubmit='return SubmitHandler(this)'>");

                if(!window.g_PASSWORD_PasswordSet) {
                        BuildMainTable_NoToolBar("NAS Admin", "", "ShowPasswordConfig()");
                } else if(window.g_HOSTNAME_NotSet) {
                        BuildMainTable_NoToolBar("NAS Admin", "Please assign your device a network name", "ShowHostNameConfig()");
                } else {
                        BuildMainTable("Please name your device", "", "ShowBoth()");
                }
                document.write("</form>");

        </script>
</html>

www-data@Moxa:~$

 

И это не выложил бы, но уж больно давно сам хотел этот curl именно на MOXA UC-7112-Lx-Plus... а тут удача в попытке:)

Link to comment

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

3proxy.zip

Прокси сервер. Это так сказать с разгона в обучении сборки. Тут только исполняемые файлы. Я испытал proxy без всяких настроек только так:

./proxy -p8080

Тем самым сделав соединение через прокси между интерфейсами LAN1 и LAN2. Кстати нормально работает. Только apache пришлось остановить - ест много ОЗУ.

Всё можно оформить по человечески в /usr/bin  В моём применении (для меня) штука полезная. Сам прокси - он 3proxy как есть, только собран компилятором, что с диска от IA240/UC-7112-LX-Plus. Вот блин:rolleyes: теперь он будет сразу в двух подсетях, а не PC с Debian с двумя сетевыми картами.

Link to comment
  • 3 weeks later...

Доброго времени суток! И... и с наступающим СТАРЫМ НОВЫМ ГОДОМ!

Искал и вот наткнулся на curl-7.63.0 ну и решил собрать и его. Да и сделать "инсталяцию" его на устройства типа IA240LX/UC-7112-LX-plus.

Вот:

curl_7.63.zip

Но есть одно НО! А именно у меня на SD карте есть директории USR и LIB и они примонтированы на место /usr и /lib соответственно. Таким образом  это обезопасило меня для опытов. SD карта гораздо дешевле устройства.

И вот:

www-data@Moxa:~$ curl --version       
curl 7.63.0 (arm-unknown-linux-gnu) libcurl/7.63.0 OpenSSL/0.9.8i
Release-Date: 2018-12-12
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IPv6 Largefile NTLM NTLM_WB SSL UnixSockets HTTPS-proxy 
www-data@Moxa:~$ 

Видите теперь есть ещё и SMB, то есть теперь устройство может самостоятельно с помощью curl сохранять и изменять файлы по сети на машинах windows. Значит можно делать логи и т.п. прямо в нужном месте в сети,  а не на устройстве. Для установки (про монтирование уже сказал)  надо запустить install.sh вот:

# ./install.sh
install for IA240LX / UC-7112-LX-Plus
copy curl to /usr/bin ...
copy libcurl.so.4.5.0 to /lib/libcurl.so.4.5.0 ...
create link libcurl.so.4 ...
curl --version
curl 7.63.0 (arm-unknown-linux-gnu) libcurl/7.63.0 OpenSSL/0.9.8i
Release-Date: 2018-12-12
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IPv6 Largefile NTLM NTLM_WB SSL UnixSockets HTTPS-proxy 
END

 

Link to comment

С Новым Годом! (Старым конечно). Доброго времени суток!

...Первые опыты с curl по smb. Тут читаю файл с некой машины из расшареной папки windows и вывожу в консоль

www-data@Moxa:~/ramdisk$ curl -u ":" smb://192.168.0.74/shared/test.txt          
----TEST---
www-data@Moxa:~/ramdisk$

Как видно -u ":" тут согласно подсказки пользователь:пароль ну и/или домен. Машина со свободным доступом к папке специально для всех и всё (кстати винда виртуальная на VirtualBox). Ключ -u и содержимое надо обязательно. И вот:

www-data@Moxa:~/ramdisk$ curl -u "1234abcde:5678fghi" smb://192.168.0.74/shared/test.txt        
----TEST---
www-data@Moxa:~/ramdisk$

даже логин и пароль от потолка... папка открыта для всех. Выведено содержимое файла test.txt из соответствующего места в консоль

А вот подготовили некий файл 123.txt на устройстве UC7112LX-plus и отправили его:

www-data@Moxa:~/ramdisk$ curl -T 123.txt -u "1234:5678" smb://192.168.0.74/shared/123.txt
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    18    0     0  100    18      0      7  0:00:02  0:00:02 --:--:--     7
www-data@Moxa:~/ramdisk$

Ну и потом прочитали его же из машины по сети с выводом в консоль:

www-data@Moxa:~/ramdisk$ curl -u "1234:5678" smb://192.168.0.74/shared/123.txt           
-----abc----
123

www-data@Moxa:~/ramdisk$

Так что метод работает... контроллеры сами  могут класть и брать файлы на машины windows, где какие-то программы их потребляют.

А вот если к примеру MySQL-клиент на контроллере. Он сам сможет вносить что-то в базу данных и брать из неё. Это как вариант...

Link to comment
  • 2 weeks later...
В 25.12.2018 в 12:18, oiv_1968 сказал:

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

3proxy.zip

Прокси сервер. Это так сказать с разгона в обучении сборки. Тут только исполняемые файлы. Я испытал proxy без всяких настроек только так:


./proxy -p8080

Тем самым сделав соединение через прокси между интерфейсами LAN1 и LAN2. Кстати нормально работает. Только apache пришлось остановить - ест много ОЗУ.

Всё можно оформить по человечески в /usr/bin  В моём применении (для меня) штука полезная. Сам прокси - он 3proxy как есть, только собран компилятором, что с диска от IA240/UC-7112-LX-Plus. Вот блин:rolleyes: теперь он будет сразу в двух подсетях, а не PC с Debian с двумя сетевыми картами.

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

Конечно сей прокси вроде как ни к чему но... но при применении по схеме LAN1 <---> LAN2 через конфигурацию столкнулись с проблемой когда контроллер AC800M (ABB) наглухо зависал. А ранее его так же включали в общую локальную сеть... и так же зависал. Он контроллер имеет 2 ETHERNEN соединения с IP 192.169.0.100 и 192.168.1.100 соответственно. По 1-му он связан с сенсорным дисплеем, а второй был свободен. Подключались к первому - пускали в локалку. Потом был опыт с применением 2-го соединения - удачно! Ну и другая подсеть соответственно. Всё для сбора данных. И в эту подсеть ещё один контроллер - управление охлаждением. А узлом между локалкой  и подсетью ПК с двумя сетевухами. Ну иногда нужен доступ к каждому из контроллеров из локалки. Все контроллеры с WEB - интерфейсами. Тут и помог сей прокси.

А просьба и вопрос вот в чём:

Имеется ли для UC-7112-Lx-Plus набор утилит cifs (mount.cifs и др)? Собственно собрал, но только mount.cifs - думал будет работать. А он пустышка. Потому как в исходниках нет ни cifs.idmap, ни cifs.upcall ни др. Точнее есть.. по умолчанию они в сборку не включены. А если ключами добавить типа:

#!/bin/sh



echo "------ для UC7112LX-plus ------"

./configure \
ARCH=arm \
CC=/usr/local/arm-linux/bin/arm-linux-gcc \
CROSS_COMPILE=/usr/local/arm-linux/bin/arm-linux- \
LDFLAGS="-L/usr/local/arm-linux/lib" \
--host=arm-linux \
--enable-pie=no \
--enable-cifsacl \
ac_cv_func_malloc_0_nonnull=yes ac_cv_func_realloc_0_nonnull=yes

Тут только cifsacl то сразу нет ряда файлов (заголовочных... ну и Си соответственно). Искал... они конечно есть в samba... и их надо грамотно перетаскивать. Это можно попробовать. Там в описании cifs сказано, что пакет не требует дополнительных библиотек, но должны быть файлы упомянутые ранее, которые не включены в сбору. Да без ключей собрал mount.cifs на устройстве запускается и умеет только help. А надо все утилиты.

Кругом машины с windows. С curl работает всё, но это только бросать логи на расшареную папку некой машины. А хочется сделать некий рабочий буфер для самого устройства в сети. Будь это IA240LX можно было бы и HDD подключить. А на UC-7112-LX-Plus можно только по сети, потому как SD карта не в счёт и она для другого.

Спасибо!

Link to comment
  • 1 month later...

Доброго времени суток! Кроме netcat вот ещё и socat

socat.zip

Ранее не применял, но вчера после сборки испытал. Работает! На мой взгляд в ряде применений удобнее netcat, ну сами знаете.

Уважаемые знатоки! А можно ли им как говориться наводить многоарочные мосты?

Link to comment
  • 3 weeks later...

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

Опять про cURL:

Имеется некий IA240LX, который по Modbus управляет системой водоподготовки. Сам он в сети предприятия. И он через curl и прокси в этой же сети получает доступ по ftp к UC-1019(Windows CE) в другой подсети (цеха). Там система управления охлаждением индукторов, которая имеет датчик температуры на улице.

И:

www-data@Moxa:~$ curl -x www-data:www-data@192.168.0.234:8080 ftp://admin:12345670@192.168.1.210/Temp
<pre><hr>
230 User logged in, proceed.
<hr>[<A HREF="..">..</A>]
---------- 11-26-18  12:15      4608 <A HREF="/Temp/test_owen_dll.exe">test_owen_dll.exe</A>
---------- 11-26-18  12:15      4096 <A HREF="/Temp/test_modbus_dll.exe">test_modbus_dll.exe</A>
---------- 11-26-18  12:15     12288 <A HREF="/Temp/test_modbus.exe">test_modbus.exe</A>
---------- 11-26-18  12:15      5120 <A HREF="/Temp/test_abp_tcp_dll.exe">test_abp_tcp_dll.exe</A>
---------- 11-26-18  12:15        69 <A HREF="/Temp/start.bat">start.bat</A>
---------- 11-26-18  12:15      6144 <A HREF="/Temp/dllOwen.dll">dllOwen.dll</A>
---------- 11-26-18  12:15     13824 <A HREF="/Temp/dllModbusRTU.dll">dllModbusRTU.dll</A>
---------- 11-26-18  12:15      7680 <A HREF="/Temp/dllCoolServer.dll">dllCoolServer.dll</A>
---------- 11-26-18  12:15     17920 <A HREF="/Temp/dllAbpTcp.dll">dllAbpTcp.dll</A>
---------- 11-26-18  12:15     10240 <A HREF="/Temp/cool.dll">cool.dll</A>
---------- 11-26-18  12:15     20480 <A HREF="/Temp/abp_tcp_test.exe">abp_tcp_test.exe</A>
---------- 11-26-18  12:15      9216 <A HREF="/Temp/abp_control.exe">abp_control.exe</A>
<hr>226 Closing data connection.

А затем прочитав:

www-data@Moxa:~$ curl -x www-data:www-data@192.168.0.234:8080 ftp://admin:12345670@192.168.1.210/Temp/start.bat
dir
cd \
dir
copy flash/tst/*.* temp
cd temp
abp_control.exe

www-data@Moxa:~$ 

Сделан вывод, что если переделать на UNO-1019 исполняемый файл, что бы он оставлял текущие параметры в файле. Можно применить и чтение уличной температуры напрямую. В плане того, что некий UC-7112-LX-Plus имея 2 ETHERNET так же в двух этих сетях.

А вот доступ к двум устройствам в разных подсетях. Это просто простой пример

www-data@Moxa:~$ curl -x www-data:www-data@192.168.0.234:8080 ftp://admin:12345670@192.168.1.210/Temp ftp://root:paramon@192.168.0.246
<pre><hr>
230 User logged in, proceed.
<hr>[<A HREF="..">..</A>]
---------- 11-26-18  12:15      4608 <A HREF="/Temp/test_owen_dll.exe">test_owen_dll.exe</A>
---------- 11-26-18  12:15      4096 <A HREF="/Temp/test_modbus_dll.exe">test_modbus_dll.exe</A>
---------- 11-26-18  12:15     12288 <A HREF="/Temp/test_modbus.exe">test_modbus.exe</A>
---------- 11-26-18  12:15      5120 <A HREF="/Temp/test_abp_tcp_dll.exe">test_abp_tcp_dll.exe</A>
---------- 11-26-18  12:15        69 <A HREF="/Temp/start.bat">start.bat</A>
---------- 11-26-18  12:15      6144 <A HREF="/Temp/dllOwen.dll">dllOwen.dll</A>
---------- 11-26-18  12:15     13824 <A HREF="/Temp/dllModbusRTU.dll">dllModbusRTU.dll</A>
---------- 11-26-18  12:15      7680 <A HREF="/Temp/dllCoolServer.dll">dllCoolServer.dll</A>
---------- 11-26-18  12:15     17920 <A HREF="/Temp/dllAbpTcp.dll">dllAbpTcp.dll</A>
---------- 11-26-18  12:15     10240 <A HREF="/Temp/cool.dll">cool.dll</A>
---------- 11-26-18  12:15     20480 <A HREF="/Temp/abp_tcp_test.exe">abp_tcp_test.exe</A>
---------- 11-26-18  12:15      9216 <A HREF="/Temp/abp_control.exe">abp_control.exe</A>
<hr>226 Closing data connection. 
<pre><hr>
230- Welcome to
230-           ____ _  _
230-          /  __| ||_|                 
230-     _   _| |  | | _ ____  _   _  _  _ 
230-    | | | | |  | || |  _ \| | | |\ \/ /
230-    | |_| | |__| || | | | | |_| |/    \
230-    |  ___\____|_||_|_| |_|\____|\_/\_/
230-    | |
230-    |_|
230- 
230- Product UC-7101 Series
230- For further information check:
230- http://www.moxa.com.tw/
230- 
230 User root logged in.
<hr>lrwxrwxrwx May 28  2010       LINK <A HREF="/mnt/ramdisk">ramdisk</A> -&gt; /mnt/ramdisk</A>
lrwxrwxrwx May 28  2010       LINK <A HREF="/bin">sbin</A> -&gt; /bin</A>
dr-xr-xr-x Jan  1  1970        DIR <A HREF="/proc/">proc</A>
drwxr-xr-x Mar 22  2017        DIR <A HREF="/home/">home</A>
drwxr-xr-x May 28  2010        DIR <A HREF="/usr/">usr</A>
drwxrwxrwx Mar 15 07:52        DIR <A HREF="/var/">var</A>
lrwxrwxrwx May 28  2010       LINK <A HREF="/var/tmp">tmp</A> -&gt; /var/tmp</A>
drwxr-xr-x May 28  2010        DIR <A HREF="/mnt/">mnt</A>
drwxr-xr-x May 28  2010        DIR <A HREF="/lib/">lib</A>
drwxr-xr-x Mar 15 07:52        DIR <A HREF="/etc/">etc</A>
drwxr-xr-x May 28  2010        DIR <A HREF="/dev/">dev</A>
drwxr-xr-x May 28  2010        DIR <A HREF="/bin/">bin</A>
<hr>226 Transfer complete.
www-data@Moxa:~$ 

Сначала как и ранее доступ в другую подсеть к UNO-1019, а потом к UC7101-LX(Станция катодной защиты) в своей подсети. То есть сбор нужных данных по списку с помощью некого скрипта из разных устройств в разных подсетях выполнив одну команду. И в одну текстовую переменную BASH-скрипта... а потом только выделить необходимое включив нужные данные в список параметров для своего техпроцесса.

Интересно тем, что можно применить и дублирование при сбоях, и задание параметров для всех процессов и т.п.

Не приходило в голову, что такие инструменты для  удобны в АСУ:rolleyes:

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...