シェルスクリプトでtelnet接続する方法
シェルスクリプトでtelnet接続する方法を紹介します。
1.問題点
現在行っている業務で、telnet接続でサーバにログインしてコマンドを入力し、ログイン先の情報を取得する必要が発生しました。
また今後、同じ作業を繰り返し行う必要があります。
よってtelnet接続をスクリプトにしたいのですが、シェルでの接続方法が分かりません。
ということで、シェルスクリプトでtelnet接続する方法を紹介します。
ここではbashを利用しています。
2.シェルスクリプトでtelnet接続する
シェルスクリプトでtelnet接続するには次のようなスクリプトを記述します。
ここではtelnet接続して「ls -l」を投入するまでのサンプルを紹介します。
#!/bin/sh
host="xxx.xxx.xxx.xxx"
user="foo"
pass="bar"
cmd="ls -l"
( echo open ${host}
sleep 1
echo ${user}
sleep 1
echo ${pass}
sleep 1
echo ${cmd}
sleep 1 ) | telnet
赤色の部分は必要な接続情報に適宜書き換えてください。
3.解説
「open」はtelnetでホストに接続するためのコマンドで、「open ホスト名」で指定したホストに接続します。
そして、ホストへの接続・ユーザーおよびパスワードの入力について、sleepと組み合わせてechoを使って出力します。
その後のパイプでtelnetコマンドを入力します。
パイプはその前のコマンドの標準出力を後のコマンドの標準入力にする役割があります。
つまり、ホストへの接続・ユーザーおよびパスワードの標準出力をtelnetコマンドの標準入力にしているという訳です。
パイプの前のカッコは、サブシェルを意味します。
ここでは「ホストへの接続・ユーザーおよびパスワードの入力」という複数のプロセスを「telnet」という1つのパイプに流したいために全体をカッコで括っています。
4.参考サイト
参考サイトは下記です。ありがとうございました。
Posted by yujiro このページの先頭に戻る
- シェルスクリプトのexpectで応答メッセージを振り分ける方法
- bashでPostgreSQLのselect結果を出力する方法
- bashでbackspaceが動作しない場合の対処
- bashの変数から最後の1文字を取得・削除する方法
- bashのwhile文で利用した変数がループ外で反映されない場合の対処
- bashのechoでアスタリスク「*」がワイルドカードとして展開される場合の対処
- bashの正規表現でスペース(空白)を判定する方法
- bashで文字列の長さを調べる方法
- bashで数値を判定する方法
- bashで小数点を比較する方法
- bashの配列をjoinする方法
- bashのif文で正規表現を使用する方法
- Bashで変数を大文字または小文字に変換する方法
- bashの変数をsplitして配列を作る方法
- bashで小数点を比較する方法
トラックバックURL
コメントする
greeting