epicon

最初に

epiconとはLinuxのシリアル通信ソフトです。

実践IOTハウスでは、Raspberry PiのUSB接続ToCoStick(トコスティック)からシリアル通信でTOCOS TWE-Liteで温湿度計AM2321センサーやAI・DIOを制御に使っています。

SwitchやRouterなどシリアルポートでとコンソールPCでConfig設定するネットワーク機器はメーカーや機種を問わず使えると思います。

Cisco製ルーターなど設定を自動化する際、事前に作成したテキストデーターをコピーしてシリアル・コンソール画面へペーストでコンフィグの流し込みを行いますが、文字と改行の送出デレィを行いコンフィグデーターの取りこぼしを防ぐことが重要です。

このシリアルコンソールとして重要な文字と改行の送出デレイをepiconはサポート、コンフィグを安心してコピー&ペーストが出来ます。

この他、簡易telnet、zmodemなどのファイル転送ソフト、shell、マクロ、外部ソフトの起動などCUIだが多機能でコンパクトな作りとなっています。

epiconを使ったリモート保守イメージ

remote_small.png

使用方法

* オプションなし(com1:/dev/ttys0ポート、9600bps、8bitノンパリティ)

[root@~]# epicon

** Welcome to epicon Version-5.0 Copyright Isamu Yamauchi compiled:Oct 16 2011 **
      exec shell         ~!
      send binary files  ~f
      call rz,sz,sx,rx   ~rz,~sz,~sx,~rx
      call kermit        ~sk,~rk
      external command   ~C
      change speed       ~c
      exit               ~.
      Connected /dev/ttyS0
* 外部コマンド起動 オプションあり(/dev/ttyACM0ポート:FOMAモデムへスクリプト起動:FOMAダイヤルインサーバー)

[root@~]# epicon -l /dev/ttyACM0 -c /usr/local/bin/pepop2pchat
[root@~]# cat /usr/local/bin/pepop2pchat
#!/bin/sh
#This scripts sample for ppp chat
#licence GPLv2 ; this scripts designed by IZAMUKARERA 2007.3.18 ; update 2008.4.4
#usage /usr/local/bin/epicon -l /dev/ttyACM0 -c /usr/local/bin/pepop2pchat
CLR="\x1b[2J"
RED="\x1b[41m"
BULE="\x1b[44m"
NORC="\x1b[39m"
NORB="\x1b[49m"
CR="\n"
LF="\r"
HOME="\x1b[r"
POS="\x1b[20C\x1b[10B"
MSG1="
#######################################$LF
#                                     #$LF
#     FOMA Cellular Phone Detected!   #$LF
#     Now Daial-in Server Ready       #$LF
#                                     #$LF
#######################################$LF
"
MSG2="
#######################################$LF
#                                     #$LF
#    Just now Remote Host Calling!    #$LF
#    Going to PPP Negotiation         #$LF
#                                     #$LF
#######################################$LF
"

I=""
G=""
sleep 1
while [ "X$G" != "XOK" ]
do
        echo -en "AT&F\r\n" || exit 0
#       sleep 5
        read -s -n 3 -t 2 I || exit 0
        J=`echo $I|awk '/OK/{print "OK"}'`
        if [ "X$J" == "XOK" ]; then
                {
                echo -en "$CLR$HOME$BULE" >/dev/tty1
                echo -en "$MSG1$CR$LF$NORC$NORB" >/dev/tty1
                G=$J
                }
        fi
done
G=""
while [ "X$G" != "XRING" ]
do
        sleep 5
        read -s -n 5 -t 604800 I || exit 0
        J=`echo $I|awk '/RING/{print "RING"}'`
        if [ "X$J" == "XRING" ]; then
                {
                echo -en "$CRLF$RED" >/dev/tty1
                echo -en "$MSG2$CR$LF$NORC$NORB" >/dev/tty1
                G=$J
                }
        fi
done
echo -en "ATA\r\n" || exit 0
sleep 2
exec /usr/sbin/pppd $1

* ルータの設定 オプションあり(/dev/ttyUSB0,19200bps,キャラクタデレイ:30ms,CRデレイ:50ms)

[root@~]# epicon -d 30 -D 50 -s 19200 -l /dev/ttyUSB0

** Welcome to epicon Version-5.0 Copyright Isamu Yamauchi compiled:Oct 16 2011 **
      exec shell         ~!
      send binary files  ~f
      call rz,sz,sx,rx   ~rz,~sz,~sx,~rx
      call kermit        ~sk,~rk
      external command   ~C
      change speed       ~c
      exit               ~.
      Connected /dev/ttyUSB0

* ルータの設定 オプションあり(telnet,キャラクタデレイ:20ms,CRデレイ:50ms)

[root@~]# epicon -d 20 -D 50 -n 192.168.0.1:23

** Welcome to epicon Version-5.0 Copyright Isamu Yamauchi compiled:Oct 16 2011 **
      exec shell         ~!
      send binary files  ~f
      call rz,sz,sx,rx   ~rz,~sz,~sx,~rx
      call kermit        ~sk,~rk
      external command   ~C
      change speed       ~c
      exit               ~.

Telnet Server 1.10  All rights reserved.


login   :

man抜粋

epicon(1)                       epicon Manuals                       epicon(1)

NAME
       epicon  is  Easy Personal Interface Console terminal software.  First I
       am sorry. Because my English linguistic power is very shabby, this sen-
       tence  is being translated by the machine.  Because of that, read it in
       the interpretation which it is tolerant of though it thinks that it  is
       a little funny translation.

SYNOPSIS
       usage:
       epicon [-options [argument] [-options [argument]]
              [-b ] <--escape cannot be used
              [-c external_command]
              [-d send_charcacter_delay(ms)]
              [-D send_CR_delay(ms)]
              [-e escape_char]
              [-f send_file]
              [-F send_file_effective_delay]
              [-m ] <--input echo mode
              [-M ] <--line mode
              [-l com_port]
              [-L output_log_file]
              [-n ip_address[:port]]
              [-p [server_port]]
              [-q ] <--quiet mode
              [-s speed]
              [-v ] <--show version
              [-z ] <--auto rz prohibition

        defaults:
            speed:  9600b/s (Higest of 460800)
            com_port :  /dev/ttyS0
            escape: ~ (escape char is three octal digits)

        running epicon escapes:
            escape,. or escape,CTRL-D program end
            escape,!                  into to shell
            escape,escape             send escape char
            escape,f                  send files
            escape,F                  send files delay effect
            escape,c                  chege speed
            escape,C                  external command
            escape,sz                 send file zmodem
            escape,rz                 recive file zmodem
            escape,sk                 send file gkermit
            escape,rk                 recive file gkermit
            escape,sx                 send file xmodem
            escape,rx                 recive file xmodem

DESCRIPTION
       The epicon is a Linux program for console Terminal.it need libc.so.5 or
       other libc,lrz,lsz,gkermit,pepolinux,compiling gcc-2.95.3 later.   Sym-
       bolic link are being done as flowing.
       lrwxrwxrwx   1 root   root      3 Sep 22 22:39 rb -> lrz*
       lrwxrwxrwx   1 root   root      3 Sep 22 22:39 rx -> lrz*
       lrwxrwxrwx   1 root   root      3 Jul 16 17:34 rz -> lrz*
       lrwxrwxrwx   1 root   root      3 Sep 22 13:46 sz -> lsz*