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

oiv_1968

Пользователи
  • Posts

    163
  • Joined

  • Last visited

Posts posted by oiv_1968

  1. А это консольный браузер elinks (зашли по ssh на устройство, а в нём ходим по сайтам)

    Вот:

    snapshot29.thumb.png.b91a08571312a1490239ac7eec23631a.png

    Не имеем выход через прокси... А proxychains4 elinks 2>/dev/null зачем? тут все пути URL с прокси и указываем.

    Вот GOOGLE:

    snapshot32.thumb.png.7a37e70bbf6d1f2284e793bbe6959b2d.png

     

    https://yadi.sk/d/l53H3_9u19qSjg

     

     

  2. Зато только что elinks собрал и испытал. Конечно криво собрал... пока криво. Но выводит таблички и т.п. Пока убрал ssl, иначе не собирается пока.

    Вечером openssl буду проверять, собрал вот дома. Может прикрутится.

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

    вот про lynx:

    Making HTTP connection to 192.168.0.234
    Sending HTTP request.
    HTTP request sent; waiting for response.
    HTTP/1.1 200 OK
    Data transfer complete
    /bin/gzip -d --no-name /tmp/lynxXXXXGPoHpw/L541-7561TMP.html.gz
    Alert!: Error uncompressing temporary file!
    
    lynx: Start file could not be found or is not text/html or text/plain
          Exiting...                                                                                                                                                                                
    www-data@Moxa:~$ 

    ругается на gzip. Смотрим:

    www-data@Moxa:~$ gzip --help
    BusyBox v1.13.3 (2009-06-04 09:41:31 CST) multi-call binary
    
    Usage: gzip [OPTION]... [FILE]...
    
    Compress FILEs (or standard input)
    
    Options:
            -c      Write to standard output
            -d      Decompress
            -f      Force
    
    www-data@Moxa:~$

    а он gzip и не умеет --no-name. Ну соответственно и выскакивет:( по ошибке.

    Кстати w3m посмотрел на debian - он в самый раз но вот при сборке требует GC Library. Как его выключить если вообще возможно?

  4. Простите за назойливость, но вот:

    14.thumb.png.867cd026b3066d6f5fd68e6ded897798.png

     

    Это консольный браузер lynx. Прямо запущен по ssh в устройстве. Возможно будет удобен в ряде случаев. Но вот честно сказать, только собрал и как надо не испытал. В данном случае из одного устройства IA240 зашли в UC7112LX-Plus

    Этот архив:

    lynx.zip

    распаковать в устройство, произвести запуск install.sh в root. В директорию /usr/bin будет скопирован lynx а в директорию /usr/local/etc файлы конфигурации.

    Программа сразу будет в консоли, как команда:

    www-data@Moxa:~$ lynx --help  
    USAGE: lynx [options] [file]
    Options are:
      -                 receive options and arguments from stdin
      -accept_all_cookies 
                        accept cookies without prompting if Set-Cookie handling
                        is on (off)
      -anonymous        apply restrictions for anonymous account,
                        see also -restrictions
      -assume_charset=MIMEname
                        charset for documents that don't specify it
      -assume_local_charset=MIMEname
                        charset assumed for local files
      -assume_unrec_charset=MIMEname
                        use this instead of unrecognized charsets
      -auth=id:pw       authentication information for protected documents
      -base             prepend a request URL comment and BASE tag to text/html
                        outputs for -source dumps
      -bibhost=URL      local bibp server (default http://bibhost/)
      -book             use the bookmark page as the startfile (off)
      -buried_news      toggles scanning of news articles for buried references (on)
      -cache=NUMBER     NUMBER of documents cached in memory
      -case             enable case sensitive user searching (off)
      -center           toggle center alignment in HTML TABLE (off)
      -cfg=FILENAME     specifies a lynx.cfg file other than the default
      -child            exit on left-arrow in startfile, and disable save to disk
      -child_relaxed    exit on left-arrow in startfile (allows save to disk)
      -cmd_log=FILENAME log keystroke commands to the given file
      -cmd_script=FILENAME
                        read keystroke commands from the given file
                        (see -cmd_log)
      -connect_timeout=N
                        set the N-second connection timeout (18000)
      -cookie_file=FILENAME
                        specifies a file to use to read cookies
      -cookie_save_file=FILENAME
                        specifies a file to use to store cookies
      -cookies          toggles handling of Set-Cookie headers (on)
      -core             toggles forced core dumps on fatal errors (off)
      -crawl            with -traversal, output each page to a file
                        with -dump, format output as with -traversal, but to stdout
      -curses_pads      uses curses pad feature to support left/right shifting (on)
      -debug_partial    incremental display stages with MessageSecs delay (off)
      -delay=NNN        set NNN-second delay at statusline message (0.000)
      -display=DISPLAY  set the display variable for X exec'ed programs
      -display_charset=MIMEname
                        charset for the terminal output
      -dont_wrap_pre    inhibit wrapping of text in <pre> when -dump'ing and
                        -crawl'ing, mark wrapped lines in interactive session (off)
      -dump             dump the first file to stdout and exit
      -editor=EDITOR    enable edit mode with specified editor
      -emacskeys        enable emacs-like key movement (off)
      -enable_scrollback 
                        toggles compatibility with comm programs' scrollback
                        keys (may be incompatible with some curses packages) (off)
      -error_file=FILE  write the HTTP status code here
      -force_empty_hrefless_a 
                        force HREF-less 'A' elements to be empty (close them as
                        soon as they are seen) (off)
      -force_html       forces the first document to be interpreted as HTML (off)
      -force_secure     toggles forcing of the secure flag for SSL cookies (off)
      -forms_options    toggles forms-based vs old-style options menu (on)
      -from             toggle transmission of From headers (on)
      -ftp              disable ftp access (off)
      -get_data         user data for get forms, read from stdin,
                        terminated by '---' on a line
      -head             send a HEAD request (off)
      -help             print this usage message
      -hiddenlinks=[option]
                        hidden links: options are merge, listonly, or ignore
      -historical       toggles use of '>' or '-->' as terminator for comments (off)
      -homepage=URL     set homepage separate from start page
      -html5_charsets   toggles use of HTML5 charset replacements (off)
      -image_links      toggles inclusion of links for all images (off)
      -index=URL        set the default index file to URL
      -ismap            toggles inclusion of ISMAP links when client-side
                        MAPs are present (off)
      -justify          do justification of text (off)
      -link=NUMBER      starting count for lnk#.dat files produced by -crawl (0)
      -list_inline      with -dump, forces it to show links inline with text (off)
      -listonly         with -dump, forces it to show only the list of links (off)
      -localhost        disable URLs that point to remote hosts (off)
      -lss=FILENAME     specifies a lynx.lss file other than the default
      -mime_header      include mime headers and force source dump
      -minimal          toggles minimal versus valid comment parsing (on)
      -newschunksize=NUMBER
                        number of articles in chunked news listings
      -newsmaxchunk=NUMBER
                        maximum news articles in listings before chunking
      -nobold           disable bold video-attribute
      -nobrowse         disable directory browsing
      -nocc             disable Cc: prompts for self copies of mailings (off)
      -nocolor          turn off color support
      -nofilereferer    disable transmission of Referer headers for file URLs (on)
      -nolist           disable the link list feature in dumps (off)
      -nolog            disable mailing of error messages to document owners (on)
      -nomargins        disable the right/left margins in the default
                        style-sheet (off)
      -nomore           disable -more- string in statusline messages
      -nonrestarting_sigwinch 
                        make window size change handler non-restarting (off)
      -nonumbers        disable the link/form numbering feature in dumps (off)
      -nopause          disable forced pauses for statusline messages
      -noprint          disable some print functions, like -restrictions=print (off)
      -noredir          don't follow Location: redirection (off)
      -noreferer        disable transmission of Referer headers (off)
      -noreverse        disable reverse video-attribute
      -nostatus         disable the miscellaneous information messages (off)
      -notitle          disable the title at the top of each page (off)
      -nounderline      disable underline video-attribute
      -number_fields    force numbering of links as well as form input fields (off)
      -number_links     force numbering of links (off)
      -output_filename_mode with -crawl and -traversal, how to name the file:
                              0 default
                              1 use page title (0)
      -partial          toggles display partial pages while downloading (on)
      -partial_thres    [=NUMBER]
                        number of lines to render before repainting display
                        with partial-display logic (-1)
      -passive-ftp      toggles passive ftp connection (on)
      -pauth=id:pw      authentication information for protected proxy server
      -popup            toggles handling of single-choice SELECT options via
                        popup windows or as lists of radio buttons (off)
      -post_data        user data for post forms, read from stdin,
                        terminated by '---' on a line
      -preparsed        show parsed text/html with -source and in source view
                        to visualize how lynx behaves with invalid HTML (off)
      -prettysrc        do syntax highlighting and hyperlink handling in source
                        view (off)
      -print            enable print functions (DEFAULT), opposite of -noprint (on)
      -pseudo_inlines   toggles pseudo-ALTs for inlines with no ALT string (on)
      -raw              toggles default setting of 8-bit character translations
                        or CJK mode for the startup character set (off)
      -realm            restricts access to URLs in the starting realm (off)
      -read_timeout=N   set the N-second read-timeout (18000)
      -reload           flushes the cache on a proxy server
                        (only the first document affected) (off)
      -restrictions=[options]
                        use -restrictions to see list
      -resubmit_posts   toggles forced resubmissions (no-cache) of forms with
                        method POST when the documents they returned are sought
                        with the PREV_DOC command or from the History List (off)
      -rlogin           disable rlogins (off)
      -scrollbar        toggles showing scrollbar (off)
      -scrollbar_arrow  toggles showing arrows at ends of the scrollbar (on)
      -selective        require .www_browsable files to browse directories
      -session=FILENAME resumes from specified file on startup and
                        saves session to that file on exit
      -sessionin=FILENAME
                        resumes session from specified file
      -sessionout=FILENAME
                        saves session to specified file
      -short_url        enables examination of beginning and end of long URL in
                        status line (off)
      -show_cfg         Show `LYNX.CFG' setting (off)
      -show_cursor      toggles hiding of the cursor in the lower right corner (on)
      -show_rate        toggles display of transfer rate (on)
      -soft_dquotes     toggles emulation of the old Netscape and Mosaic
                        bug which treated '>' as a co-terminator for
                        double-quotes and tags (off)
      -source           dump the source of the first file to stdout and exit
      -stack_dump       disable SIGINT cleanup handler (off)
      -startfile_ok     allow non-http startfile and homepage with -validate (off)
      -stderr           write warning messages to standard error when -dump
                        or -source is used (off)
      -stdin            read startfile from standard input (off)
      -tagsoup          use TagSoup rather than SortaSGML parser (off)
      -telnet           disable telnets (off)
      -term=TERM        set terminal type to TERM
      -tlog             toggles use of a Lynx Trace Log for the current
                        session (on)
      -tna              turn on "Textfields Need Activation" mode (off)
      -trace            turns on Lynx trace mode (off)
      -trace_mask       customize Lynx trace mode (0)
      -traversal        traverse all http links derived from startfile
      -trim_input_fields 
                        trim input text/textarea fields in forms (off)
      -underline_links  toggles use of underline/bold attribute for links (off)
      -underscore       toggles use of _underline_ format in dumps (off)
      -unique_urls      toggles use of unique-urls setting for -dump and -listonly options (off)
      -use_mouse        turn on mouse support (off)
      -useragent=Name   set alternate Lynx User-Agent header
      -validate         accept only http URLs (meant for validation)
                        implies more restrictions than -anonymous, but
                        goto is allowed for http and https (off)
      -verbose          toggles [LINK], [IMAGE] and [INLINE] comments
                        with filenames of these images (on)
      -version          print Lynx version information
      -vikeys           enable vi-like key movement (off)
      -width=NUMBER     screen width for formatting of dumps (default is 80)
      -with_backspaces  emit backspaces in output if -dumping or -crawling
                        (like 'man' does) (off)
      -xhtml-parsing    enable XHTML 1.0 parsing (off)
    www-data@Moxa:~$ 

    Браузер работает, но при обращении к большому содержимому затык. Сбрасывает какое-то содержимое в /tmp похоже надо что-то в настройках менять.

  5. Так же готов и комплект ncursers-ng, в котором и lib + include для Си проектов, примеры применения на Си и элементы

    infocmp  ncurses  tic  toe  tput  tset

    Которые можно применить и в BASH скриптах.

     

     

    13.thumb.png.655b8eb4c555a8d5f554f34b2f379083.png

     

    https://yadi.sk/d/exxyLTUgKewiog

     

  6. Доброго времени суток! Интерфейс через браузер, если не надо графики тяжеловат:( А вот консольный интерфейс вроде ничего:

     

     

    10.thumb.png.03ffb44f51eef46a2afa34608d2704b8.png

    Таким образом можно стало делать некий интерфейс в консоли... простой интерфейс в BASH. с появлением после инсталяции компонента dialog:

    www-data@Moxa:~$ dialog
    cdialog (ComeOn Dialog!) version 1.3-20190211
    Copyright 2000-2017,2018 Thomas E. Dickey
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    * Display dialog boxes from shell scripts *
    
    Usage: dialog <options> { --and-widget <options> }
    where options are "common" options, followed by "box" options
    
    Special options:
      [--create-rc "file"]
    Common options:
      [--ascii-lines] [--aspect <ratio>] [--backtitle <backtitle>] [--beep]
      [--beep-after] [--begin <y> <x>] [--cancel-label <str>] [--clear]
      [--colors] [--column-separator <str>] [--cr-wrap] [--date-format <str>]
      [--default-button <str>] [--default-item <str>] [--defaultno]
      [--exit-label <str>] [--extra-button] [--extra-label <str>]
      [--help-button] [--help-label <str>] [--help-status] [--help-tags]
      [--hfile <str>] [--hline <str>] [--ignore] [--input-fd <fd>]
      [--insecure] [--item-help] [--keep-tite] [--keep-window] [--last-key]
      [--max-input <n>] [--no-cancel] [--no-collapse] [--no-cr-wrap]
      [--no-items] [--no-kill] [--no-label <str>] [--no-lines] [--no-mouse]
      [--no-nl-expand] [--no-ok] [--no-shadow] [--no-tags] [--nook]
      [--ok-label <str>] [--output-fd <fd>] [--output-separator <str>]
      [--print-maxsize] [--print-size]
      [--print-text-only <text> <height> <width>]
      [--print-text-size <text> <height> <width>] [--print-version] [--quoted]
      [--reorder] [--scrollbar] [--separate-output] [--separate-widget <str>]
      [--shadow] [--single-quoted] [--size-err] [--sleep <secs>] [--stderr]
      [--stdout] [--tab-correct] [--tab-len <n>] [--time-format <str>]
      [--timeout <secs>] [--title <title>] [--trace <file>] [--trim]
      [--version] [--visit-items] [--week-start <str>] [--yes-label <str>]
    Box options:
      --buildlist    <text> <height> <width> <list-height> <tag1> <item1> <status1>...
      --calendar     <text> <height> <width> <day> <month> <year>
      --checklist    <text> <height> <width> <list height> <tag1> <item1> <status1>...
      --dselect      <directory> <height> <width>
      --editbox      <file> <height> <width>
      --form         <text> <height> <width> <form height> <label1> <l_y1> <l_x1> <item1> <i_y1> <i_x1> <flen1> <ilen1>...
      --fselect      <filepath> <height> <width>
      --gauge        <text> <height> <width> [<percent>]
      --infobox      <text> <height> <width>
      --inputbox     <text> <height> <width> [<init>]
      --inputmenu    <text> <height> <width> <menu height> <tag1> <item1>...
      --menu         <text> <height> <width> <menu height> <tag1> <item1>...
      --mixedform    <text> <height> <width> <form height> <label1> <l_y1> <l_x1> <item1> <i_y1> <i_x1> <flen1> <ilen1> <itype>...
      --mixedgauge   <text> <height> <width> <percent> <tag1> <item1>...
      --msgbox       <text> <height> <width>
      --passwordbox  <text> <height> <width> [<init>]
      --passwordform <text> <height> <width> <form height> <label1> <l_y1> <l_x1> <item1> <i_y1> <i_x1> <flen1> <ilen1>...
      --pause        <text> <height> <width> <seconds>
      --prgbox       <text> <command> <height> <width>
      --programbox   <text> <height> <width>
      --progressbox  <text> <height> <width>
      --radiolist    <text> <height> <width> <list height> <tag1> <item1> <status1>...
      --rangebox     <text> <height> <width> <min-value> <max-value> <default-value>
      --tailbox      <file> <height> <width>
      --tailboxbg    <file> <height> <width>
      --textbox      <file> <height> <width>
      --timebox      <text> <height> <width> <hour> <minute> <second>
      --treeview     <text> <height> <width> <list-height> <tag1> <item1> <status1> <depth1>...
      --yesno        <text> <height> <width>
    
    Auto-size with height and width = 0. Maximize with height and width = -1.
    Global-auto-size if also menu_height/list_height = 0.
    www-data@Moxa:~$ 

    Распаковать 

    dialog.zip

    в устройство, с правами root запустить install.sh. В директорию /usr будет помещён каталог terminfo и в /usr/bin помещён файл dialog. После этого в консоли будет доступен собственно dialog (d + TAB):

    www-data@Moxa:~$ d
    date         delgroup     depmod       dhcpcd       dirname      discard      do           downramdisk  
    declare      deluser      df           dialog       dirs         dmesg        done         du           
    www-data@Moxa:~$

    А в директории samples будут запускаемые примеры применения этой утилиты.

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

    Прошу прощения за беспокойство! Вот proxychains-ng... точнее установка (в сессии root):

    proxychains-ng.zip

    Надо только распаковать на устройство, и запустить install.sh:

    root@Moxa:/home/httpd/ramdisk/inst/proxychains-ng# ./install.sh
    --- proxychains-ng -----
    setup to MOXA IA240LX, IA241LX, UC7112LX-Plus...
    ...copy proxychains4 to /usr/bin
    ...copy proxychains4.so to /usr/lib
    ...copy proxychains.conf to /etc
    --- end ---
    root@Moxa:/home/httpd/ramdisk/inst/proxychains-ng#

    В директории /etc будет файл proxychains.conf в конце файла

    ...
    ...
    ...
    # ProxyList format
    #       type  ip  port [user pass]
    #       (values separated by 'tab' or 'blank')
    #
    #       only numeric ipv4 addresses are valid
    #
    #
    #        Examples:
    #
    #            	socks5	192.168.67.78	1080	lamer	secret
    #		http	192.168.89.3	8080	justu	hidden
    #	 	socks4	192.168.1.49	1080
    #	        http	192.168.39.93	8080	
    #		
    #
    #       proxy types: http, socks4, socks5
    #        ( auth types supported: "basic"-http  "user/pass"-socks )
    #
    [ProxyList]
    # add proxy here ...
    # meanwile
    # maintest:
    #
    http 	192.168.0.234	8080	www-data	www-data

    В конце указать список прокси по порядку указав протокол и пользователя с паролем если таковые есть. Если нет, то заполнять не надо. Там в примере всё показано.

  8. В 01.03.2019 в 09:17, oiv_1968 сказал:

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

    socat.zip

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

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

    А зачем? А много где. Вот к примеру связать /dev/ttyMO на устройстве и сокет

    socat tcp-listen:1234,fork /dev/ttyM0

    Сам подсмотрел конечно. Но тут всё что придёт на сокет (порт 1234) уйдёт в порт /dev/ttyM0 и уйдёт обратно. И запустил на устройстве

    Для примера запустил  на PC

    telnet 192.168.0.240 1234
    Trying 192.168.0.240...
    Connected to 192.168.0.240.
    Escape character is '^]'.
    1234
    1234
    1234
    ;lkj;lkj;j  
    ;lkj;lkj;lkj;lkj
    

    При нажатии "enter" набранная стока уходит в порт устройства и мигает "TX" и если pin2 и pin3 для этого замкнуть то и "RX" и эхо вернётся обратно в PC.

    Аналогично испытал монитор "Modbus Pol" монитор Modbus. Всё работает. Но для этого порт устройстве перевести в режим RS485.

    Вот так:

    root@Moxa:~# chmod 777 /dev/ttyM0                                                                                                                                                               
    root@Moxa:~# setinterface                                                                                                                                                                       
    Usage: setinterface device-node [interface-no]                                                                                                                                                  
            device-node     - /dev/ttyM0 ~ /dev/ttyM3
            interface-no    - following:
            none - to view now setting
            0 - set to RS232 interface
            1 - set to RS485-2WIRES interface
            2 - set to RS422 interface
            3 - set to RS485-4WIRES interface
    root@Moxa:~# setinterface /dev/ttyM0 1
    root@Moxa:~# 

    Тут сначала дали разрешение на последовательный порт для всех, посмотрели подсказку на изменение режима и изменили режим работы на RS485. Скорость и другие параметры порта я не трогал.

    Для работы с устройствами Modbus по сети через UC7112LX-Plus. Установив socat на устройство спокойно производится проброс последовательного "соединения" по локальной сети. Можно применять и локальные программы на PC для работы с удалённым устройством через моха. Удобно для отработки с неизвестным устройством. Надо посмотреть может и конфигурация прокатит ну например для ОВЕН устройств ввода-вывода... и не надо их демонтировать для изменения настроек, которые вдруг приходится менять:rolleyes:. А ранее было такое вдруг стало надо перейти с 9600 на 115200 после того как был установлен повторитель интерфейса на длинной линии. И приходилось их каждай снимать и конфигуратором(программой) изменять. Было не очень весело. А тут можно и штатный контроллер применять без демонтажа. А штатный это IA240LX

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

    Так как же с цепочкой прокси? Долго не смог сделать.:(

    Но вот наткнулся на

    https://github.com/rofl0r/proxychains-ng

    Ну и гугл помог. Сначала собрал для PC(Debian), но там без проблем вообще. Испытал - работает. А как с UC7112LX-Plus? Сначала было печально. Но вот потом с бубном и матом вот:

    proxychains-ng.zip

    Испытал! Работает. Испытал цепочку локальных прокси. Конечно через curl (ранее про него говорилось уже). Долго конечно делал(собирал, а где-то и изменял код выбирая в #ifdeb #define - но фактически ничего не менял).

    Для работы файл libproxychains4.so надо поместить в /lib и файл proxychains4 соответственно в /usr/bin

    Повторно напомню, что такие(указанные) директории у меня на SD карте.

    А пример файла конфигурации тут:

    https://github.com/rofl0r/proxychains-ng/blob/master/src/proxychains.conf

    его можно использовать как из локальной директории с указанием через -f <file.conf> или он будет найден самим proxychains4 в /etc/proxychains.conf

    www-data@Moxa:~/ramdisk$ proxychains4 -f proxychains.conf curl -L -k -I www.moxa.ru 
    [proxychains] config file found: proxychains.conf
    [proxychains] preloading /lib/libproxychains4.so
    [proxychains] DLL init: proxychains-ng 4.14
    [proxychains] Strict chain  ...  127.0.0.1:8080  ...  192.168.0.234:8080  ...  192.168.0.3:8080  ...  www.moxa.ru:80  ...  OK
    HTTP/1.1 301 Moved Permanently
    Server: nginx/1.14.1
    Date: Thu, 28 Mar 2019 11:58:14 GMT
    Content-Type: text/html
    Content-Length: 185
    Connection: keep-alive
    Location: https://www.moxa.ru/
    
    [proxychains] Strict chain  ...  127.0.0.1:8080  ...  192.168.0.234:8080  ...  192.168.0.3:8080  ...  www.moxa.ru:443  ...  OK
    HTTP/1.1 200 Ok
    Server: nginx/1.14.1
    Date: Thu, 28 Mar 2019 11:58:15 GMT
    Content-Type: text/html; charset=utf-8
    Content-Length: 27520
    Connection: keep-alive
    Expires: Thu, 19 Nov 1981 08
    Cache-Control: private, no-cache, must-revalidate, max-age=0
    Pragma: no-cache
    Status: 200 Ok
    X-Generated-By: UMI.CMS
    X-CMS-Version: dev
    X-XSS-Protection: 0
    Set-Cookie: PHPSESSID=gfsoa9df891c0j5ugq7gpusbk3; expires=Thu, 11-Apr-2019 11:58:15 GMT; Max-Age=1209600; path=/; HttpOnly
    Set-Cookie: customer_currency=13; expires=Mon, 01-Apr-2019 15:58:15 GMT; Max-Age=360000; path=/
    
    www-data@Moxa:~/ramdisk$

    Как видно на самой UC7112LX-Plus поднят ещё и прокси (порт 8080), потом другой прокси и прокси для выхода в интернет. А далее отработал curl с выводом в консоль.:rolleyes:

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

    Опять про 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:

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

    socat.zip

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

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

  12. Спасибо за отклик!

    Пот подумал, и что-то не хочется сопли вешать на устройство. Подумал и...

    А если взять небольшой порт вывода... малогабаритный и на DIN рейку, который бы имел аварийное состояние.И через 5 секунд при отсутствии связи пусть снимает напряжение питания на остальные устройства по Modbus. А потом контроллер пусть производит включение его вывода и этим подаёт питание на все блоки. Ну и продолжает работу по Modbus.

    Правда первый вариант более надёжен если бы не "сопли", а нормальный преобразователь уровней.

    Подумаю...

    Спасибо! Вопрос снят!

  13. Простите меня - я запаниковал.

    Вот:

    • Дискретный вывод
    • Количество каналов дискретного вывода
      4 
    • Максимальная нагрузка на канал
      24 мА 
    • Напряжение лог. 0
      0 ~ 0.55 В 
    • Напряжение лог. 1
      2.5 ~ 3.3 В
    Как то  в документации на диске не прочитал. Зато найдено тут:
    Странно такие слабенькие. Ну что же... значит надо по первой схеме. Да странно... это по логике на 3.3 В. Даже без буфера?
    Лучше наверное вообще через оптопару!
  14. Доброго времени суток!

    В документации не смог найти... и простите, если там написано, но не прочёл!

    Собственно вопрос в том, каковы на IA240LX типы выходов. То что ключи это ясно. Не ведаю какого типа. Происходит замыкание на корпус (открытый коллектор) или выдаёт уровень напряжения. Будь это устройство на столе я бы проверил, но оно в шкафу в процессе работы. Необходимость возникла в том, что на шине Modbus RTU теряется связь с модулями в плане того, они(он) при потере связи хоть и уходят в безопасное состояние(не все это умеют), но не переходят в режим "молчания" на шине, а держат некий уровень (занятость) и было принято решение питать их (снимать питание) через реле времени, которое сбрасывается фронтами импульсов. Программа на IA240LX кроме работы по Modbus должна контролировать и наличие связи с блоками и при отсутствии прекращать выдачу импульсов для сброса реле времени. А оно в свою очередь снимет питание с устройств ввода-вывода. Это перезапустит все устройства ввода-вывода и при следующих импульсах реле снова подаст питание. А импульсы (фронты/тылы) а не уровни (высокий или низкий) должны сбрасывать реле времени. Само устройство IA240LX (и  сейчас так же) ещё и контролируется сервером по сети и при необходимости им же и перезапускается.

    Вот реле времени вроде как подобрал, а типы выходов не известны. Исходя из них либо выбрать другой тип реле времени и/или изменить схему.

    Подскажите если не сложно! А то проверять в процессе эксплуатации никак не выходит.

    Для реализации потребуется либо собрать одну из схем:

    1178320032_9.PNG.82bf8e81502850b41f47a988566fe132.PNG

    529562280_10.PNG.21f0b0a45d553438b4a35bae5909b728.PNG

    Либо  осуществить контакт с "Меандр"ом на наличие у них устройств под соответствующий выход DO (IA240LX)

    Как физически реализован DO на IA240LX?

    Заранее Спасибо!

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

    Извините, за беспокойство! Но есть ли у Вас возможность/желание оказать помощь/подсказку. Я честно сказать не знаю куда и как копать. Вопрос в следующем.

    Требуется в UC-7112-LX-Plus примонтировать сетевой ресурс FTP и желательно вообще SMB с целью сохранения данных там от самого устройства. Скрипт BASH должен это делать и ещё то что сделано на Си.

    Методом проб и ошибок с бубном собрал (громко сказано):

    root@Moxa:~# curl -V              
    curl 7.63.0 (arm-unknown-linux-gnu) libcurl/7.63.0 OpenSSL/1.0.2p
    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 TLS-SRP UnixSockets HTTPS-proxy 
    root@Moxa:~# 

     

    root@Moxa:~# mount.fuse -V
    usage: mount.fuse type#[source] destination [-t type] [-o opt[,opts...]]

     

    root@Moxa:~# curlftpfs -V
    curlftpfs 0.9.2 libcurl/7.63.0 fuse/2.9

     

    Вот только (в чём и вопрос):

    root@Moxa:~# curlftpfs www-data:www-data@192.168.0.232 /var/tmp
    fuse: device not found, try 'modprobe fuse' first

    а модуля fuse нет... ну понятно, что и fuse.ko нет. Если библиотеки  получилось собрать:

    lrwxrwxrwx    1 root     root           16 Feb  2 22:30 libfuse.so -> libfuse.so.2.9.2
    lrwxrwxrwx    1 root     root           16 Feb  2 22:32 libfuse.so.2 -> libfuse.so.2.9.2
    -rwxr-xr-x    1 root     root       753697 Feb  3 17:10 libfuse.so.2.9.2

    Не без Ваших:

    lrwxrwxrwx    1 root     root           23 Feb  3 03:30 libglib-2.0.so.0 -> libglib-2.0.so.0.2400.2
    -rw-r--r--    1 www-data www-data  1480995 May 24  2015 libglib-2.0.so.0.2400.2

    И других, которые Вы предоставили ранее вместе с mc.

     

    Можно ли либо обойтись без fuse.ko либо пересобрать mount.fuse и/или curlftpfs???

    Реально ли реализовать cifs на UC-7112-LX-Plus???

    Была идея обойтись только curl, но вот не вышло работать с ним в скрипте, где надо передавать данные из параметра в bash, а не из файла. Места в устройстве и так мало, USB отсутствует. Вот и решил внешнее сетевое устройство. Про NFS пока не думал.

     

    Спасибо!

  16. Цитата

    The Tool Chain will be installed automatically on your Linux PC within a few minutes. Before compiling the
    program, be sure to set the following path first, since the Tool Chain files, including the compiler, li
    nk, library,
    and include files
    , are located in this directory.

    А вот некий перевод

    Цитата

    Цепочка инструментов будет автоматически установлена на ваш Linux ПК в течение нескольких минут. Перед компиляцией программа, не забудьте сначала установить следующий путь, так как файлы цепочки инструментов, включая компилятор, li НК, библиотека, и включить файлы находятся в этом каталоге.

     

    А тулчейн на самом устройстве сам ищу, и собрать не умею пока

  17. В 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 карта не в счёт и она для другого.

    Спасибо!

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

    ...Первые опыты с 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-клиент на контроллере. Он сам сможет вносить что-то в базу данных и брать из неё. Это как вариант...

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

    Искал и вот наткнулся на 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

     

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

    3proxy.zip

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

    ./proxy -p8080

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

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

  21. Сказать откровенно, то 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... а тут удача в попытке:)

  22. 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 подготовит автозапуск при включении.

    Собственно надо сформировать весь набор для полуавтоматической настройки всего... включая устройства.

    Поделитесь опытом...

    Спасибо!

     

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

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

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

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

    Имеет ли кто опыт в подобной реализации?

    Спасибо заранее.

×
×
  • Create New...