ページ

2017年7月27日木曜日

RPi_0026 TeraTerm自動ログイン

TeraTermのマクロ機能でttlマクロのアイコンをクリックすることで、一気にラズパイにsshログインする方法を示す。

(1) avahi-daemonのインストール

Avahi(アバヒ) は hostname.local という名前を使ってローカルでホスト名を解決する機能でありこれををラズパイ側にインストールする。
# apt-get install avahi-daemon
# apt-get install avahi-utils  #おまけ avahi-resolve使いたいとき
avahiが起動していることの確認
# ps ax|grep avahi|grep -v grep
  368 ?        Ss     2:01 avahi-daemon: running [rapiz.local]
  380 ?        S      0:00 avahi-daemon: chroot helper

(2) Bonjourのインストール

Bonjour印刷サービスをWindows10側にインストールする。
ダウンロード - Bonjour Print Services (Windows) - Apple Support
https://support.apple.com/kb/DL999?viewlocale=ja_JP
からダウンロードして、
Downloads/BonjourPSSetup.exe をクリックして、
「ようこそ Bonjour印刷サービス」の画面に従ってインストールを完了させる。
但しAppleのiTunesをすでにインストールしている場合やWindows10であれば、Bonjour機能はインストールされている可能性があり、先にpingしてみよう。
C:\Users>ping rapiz.local
ping 要求ではホスト rapiz.local が見つかりませんでした。ホスト名を確認してもう一度実行してください。
### pingが通らないか、
C:\Users>ping rapiz.local
rapiz.local [192.168.1.80]に ping を送信しています 32 バイトのデータ:
192.168.1.80 からの応答: バイト数 =32 時間 =12ms TTL=64
192.168.1.80 からの応答: バイト数 =32 時間 =11ms TTL=64
192.168.1.80 からの応答: バイト数 =32 時間 =10ms TTL=64
### pingが通ればBonjourはインストールされているだろう。

(3) ttlマクロファイルの編集

ttlマクロファイルの雛形が、
c:/Program Files (x86)/teraterm/ssh2login.ttlにあるので、これをデスクトップにコピーして、例えばssh2rapiz.ttl にリネームする。
c:/Users/Default/Desktop/ssh2rapiz.ttl を以下のように変更修正する。
*** c:/Program Files (x86)/teraterm/ssh2login.ttl
--- c:/Users/Default/Desktop/ssh2rapiz.ttl
@@ -6,19 +6,19 @@
 ; Update: 2004/12/4
 ; Author: Yutaka Hirata
 
-username = 'nike'
-hostname = '192.168.1.3'
+username = 'pi'
+hostname = 'rapiz.local'
+passwdfile = 'c:¥Program Files (x86)¥teraterm¥passwd_pi.dat'
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-msg = 'Enter password for user '
-strconcat msg username
-passwordbox msg 'Get password'
+getpassword passwdfile username userpasswd
 
 msg = hostname
 strconcat msg ':22 /ssh /auth=password /user='
 strconcat msg username
 strconcat msg ' /passwd='
+strconcat msg userpasswd
 strconcat msg inputstr
 
 connect msg
もし、ssh2rapiz.ttl が以下のような[M]マークアイコンになっていなければ、

teraterm-4.95.exeを再インストールして、

チェック項目の.ttlファイルをttermpro.exeに関連付ける

piユーザのパスワードは passwdfile = 'c:¥Program Files (x86)¥teraterm¥passwd_pi.dat' に保存される。このファイルが無ければパスワード入力されファイル作成され、ファイルがあればパスワードが読み出してデコードされて自動ログインのパスワードとして使用される。
bash-4.1$ cat "/cygdrive/c/Program Files (x86)/teraterm/passwd_pi.dat"
[Password]
pi=XXXXYYYYZZZZAAAABB  #エンコードされた文字列
たぶんHackingすればデコードできるんだろう。平文よりはヨシとする。

(4) ttlマクロの実行

ssh2rapiz.ttlのクリックで、TeraTerm自動ログインできる。
ログイン後の画面で、rapiz.localでの、IPアドレスの正引きと逆引きをしているようす。
pi@rapiz:~ $ ifconfig wlan0|grep "inet addr:"
          inet addr:192.168.1.80  Bcast:192.168.1.255  Mask:255.255.255.0
pi@rapiz:~ $
pi@rapiz:~ $ ping -c 2 rapiz.local|head -3
PING rapiz.local (192.168.1.80) 56(84) bytes of data.
64 bytes from rapiz.gjs.or.jp (192.168.1.80): icmp_seq=1 ttl=64 time=0.178 ms
64 bytes from rapiz.gjs.or.jp (192.168.1.80): icmp_seq=2 ttl=64 time=0.178 ms
pi@rapiz:~ $
pi@rapiz:~ $  avahi-resolve -n rapiz.local
rapiz.local     192.168.1.80
pi@rapiz:~ $
pi@rapiz:~ $ avahi-resolve -a 192.168.1.80
192.168.1.80    rapiz.local
pi@rapiz:~ $
これで、ネットワークの場所を移動するたびに、FingでラズパイのIPアドレスを調べて、TeraTerm起動しIPアドレスや、ユーザパスワードを入力していた手間が省ける。アイコンのクリック一発でログインできて、とても便利になるはずだ。

<20180127_補足追加:TeraTermのsshログイン時にログを記録版>
; $Id: sshLOG_rapi4.ttl,v 1.00 2018/01/23 13:19:50 RDH_team $
; sample macro of Tera Term
;
; File: ssh2login.ttl
; Description: auto login with SSH2 protocol
; Environment: generic
; Update: 2004/12/4
; Author: Yutaka Hirata
;
; (参照したURL)
; 1.マクロサンプル - 自動ログイン(SSH版)Add Star (2012.12.30)
;   http://d.hatena.ne.jp/KuroNeko666/20121230/1356931071
; 2.TeraTermマクロ-MACROで設定する自動ログ取得 (2011/04/25)
;   http://www.j-oosk.com/teraterm/logging/254/

hostnam1 = 'rapi4'
hostnam2 = '.local'
hostname = hostnam1
strconcat hostname hostnam2
username = 'myname'
basedir = 'c:\Usr\TT_LOG\'
passwdfile = basedir
strconcat passwdfile 'passwd_rapi4_myname.dat'
;; ログ保存先指定 
LOGSPATH = basedir
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
getpassword passwdfile username userpasswd

msg = hostname
strconcat msg ':22 /ssh /auth=password /user='
strconcat msg username
strconcat msg ' /passwd='
strconcat msg userpasswd
strconcat msg inputstr

;; ⑤ログファイル名の設定
getdate LOG_NAME '_%Y%m%d_%H%M.txt'
FULLPATH = LOGSPATH 
strconcat FULLPATH hostnam1
strconcat FULLPATH LOG_NAME

;; ⑥接続 
connect msg

;; ⑦接続判定1(接続出来ない場合はメッセージを表示しマクロ終了) 
if result <> 2 then
  ERR_MESS = 'Cannot HOST '
  strconcat ERR_MESS hostname
  messagebox ERR_MESS 'Connection Error' 
  end 
endif

;; ⑧接続判定2(接続して3秒以内にプロンプトが表示されない場合もマクロ終了) 
timeout = 3 
wait '$ ' '% ' '# '
if result = 0 then 
  ERR_MESS = 'NoResponse HOST '
  strconcat ERR_MESS hostname
  messagebox ERR_MESS 'Connection Error' 
  end 
endif

;; ⑨ログ取得開始
logopen FULLPATH 0 1
if result then
  messagebox FULLPATH 'logopen Error' 
  end 
endif
logwrite 'Log start '
logwrite FULLPATH
logwrite #13#10
logwrite '*****************************************************'#13#10
;logclose
;; ⑩ホスト名表示 
;sendln 'hostname' 
;wait '$' '#'

;; ⑪マクロ終了 
;end


0 件のコメント:

コメントを投稿