macでteratermマクロのようなこと(妄想)
ローカルのlinuxへの接続やgoogle cloudへの接続では、windowsからはtera termのマクロを書いておいて、それを使って接続している。 macはunixなのでtera termが動くわけじゃない。 でもログインしたときに慣用句みたいに打つ内容があるから、自動ログインした後で打鍵もやらせたい。 dfの結果とか、自前スクリプトによるプロセス稼働確認とか。 今回はmac側でやったことの記録。 結論 macで.terminalのファイルをクリックすると、tera termでttlファイル書いておいたときのように、linuxに接続してコマンドラインを自動入力して動いてくれるようにしてる。 ローカルlinuxの場合、黄色い画面色で開いてログインし接続後にonlchkってやって自前スクリプトを呼び出し、システム状態を表示させてる。 色合いとか調整した設定を.terminalって種類のファイルとして書き出し、それをクリックすることで自動接続&打鍵のスクリプトを呼び出している。 このスクリプトは大昔に作ったんやけど、当時に参考にさせてもらったサイトがどこなのかわからん。もう存在しないのかなぁ。探し方悪いだけかもしれん。 用意してるのは3種類のファイル。 当初はlinuxの種類に応じて色を変えたいだけだったけど、欲張って自動ログインとシステム状態確認をやらせたくなった。 .terminalの設定ファイル autologinってログインのための入力内容 呼び出しのスクリプト .terminalの設定ファイル 設定ファイルは、ダブルクリックすると設定した色合いやサイズ、シェルが起動する。 tera termでいう/Fで指定するウィンドウの色とか指定するときのファイルみたいなもんか。 このファイルは、ターミナルの環境設定を開いたとき「プロファイル」の画面が開くとこから作る。 テキストの色とかウィンドウサイズを設定し、「コマンドを実行」ってとこで起動時に呼び出すシェルを指定する。 自分の場合は、赤がgoogle cloud、黄色をローカルlinux、dockerコンテナを青か緑にしてtera termの色設定しているので、それに寄せて設定を作っている。 エコーバックに対する文字列送信のスクリプト tera termでいうttlファイルみたいなもの。 autologin-xxx.shってのをいくつか用意して、ローカルlinux用とgoogle cloud用とか使い分けてる。 実際は.terminalで設定した起動時の呼び出しスクリプトから最初にインクルードさせて使う。 autologinで始まるシェルに引数を受け取りつつ、打鍵内容を書いておく。 パラメータは、接続先ホスト、利用osユーザ、パスワード、ポート番号。 コマンドラインのエコーバックに来た文字列をexpectに書いておき、それに対する送信文字列をsendさせる。 最初のほうにある「Are you sure~」のあたりは初めてログインするときの確認エコーバック。 長らくこのエコーバック見てないけど、大文字小文字も厳密に書かないといけない。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #!/bin/sh auto_ssh() { host=$1 id=$2 pass=$3 ptNum=$4 ptTime=10 expect -c " set timeout ${ptTime} spawn ssh ${id}@${host} -p ${ptNum} expect \"Are you sure you want to continue connecting (yes/no)?\" { send \"yes\n\" expect \"${id}@${host}'s password:\" send \"${pass}\n\" } \"${id}@${host}'s password:\" { send \"${pass}\n\" expect \"nari\" send \"onlchk\n\" expect \"nari\" send \"df -h\n\" } interact " } montereyになった今ではnari@gvisMac ~ %って感じで「利用ユーザ@ホスト名 ホームディレクトリ」がコマンドライン待ちに来るけど、ユーザ名のみをexpectさせてonlchkとdf -hって打たせたいので書いてる。 ...