viエディタの現在のモードをわかりやすくする

viエディタの現在のモードをわかりやすくする

コマンドモードにして(現在何モードかがわからなければ、とりあえず[Escキー]を連打)

:set showmode

すると、右下(または左下)に現在のモードが表示される。

                   
                   
— 挿入 —

コマンドモードの場合は、何も表示されない。

KSH のコマンド履歴 およびにファイル名補完を有効にする

KSH のコマンド履歴およびにファイル名補完を有効にする方法

シェルのviモードを有効にする。

$ set -o vi

viモードを有効にしたら・・・
Escキーを押して(viでいうところのコマンドモードにする)

[Escキー]

コマンド履歴は

Ctrl+K(一つ前(過去)のコマンド)
Ctrl+J(1つ後(直近)のコマンド)
/<検索ワード>[Enterキー] (コマンド履歴から検索)

ファイル名補完(bashでいうところのタブ補完)は

*(アスタリスクShift+:)
※補完できる状態まで入力している必要あり。候補が複数ある場合は全部rリストされるので注意。

シェルスクリプトでtelnet接続→コマンド実行

シェルスクリプトでtelnet接続→コマンド実行

シェルスクリプトで、他ホストにtelnetログインしてコマンドを実行し情報を取得する方法。
たとえば、L2/L3スイッチの統計情報やarpテーブルの情報を自動的に取得する処理をシェルスクリプトで作成したいとき
telnetの場合、FTP転送をヒアドキュメントを使用して自動的に実行するのと同じ方法では実装できない。理由は、ヒアドキュメントの場合、標準入力に間髪入れずに入力内容を送りこんでしまうので、ログインプロンプトを待つことができないから。
ユーザ名を標準入力に送り込む前に少し待機すると、ログインすることができる。
ポイントは、
・ヒアドキュメントを使用せずに、コマンドのグループ化とパイプを使用してtelnetコマンドの標準入力にコマンドを送り込む
・sleepコマンドで待機
実際のやり方は以下を参照。(Ciscoのスイッチからarpテーブル情報を取得する場合。)

$ (sleep 5; #パスワードプロンプトが表示されるまでsleepコマンドで待つ
echo username;sleep 5; #ユーザ名入力 標準入力に送り込むのでechoで出力(Ciscoスイッチは実際にはユーザ名入力はありません)
echo password;sleep 10; # パスワード入力
enable;sleep 5; #特権モードへ切り替え
echo enablepassword;sleep 1; # 特権モードのパスワード入力
show arp;sleep 1; # arpテーブル取得
exit; ) | telnet 192.168.1.250 >> arp.log # コマンドをグループ化し、その標準出力をパイプでtelnetコマンドの標準入力に送り込む

追記:
 この方法はスクリプトで、passwdコマンドを使ってパスワードを自動設定するときにも使えます!