GNU/Linux >> Linux の 問題 >  >> Linux

bash スクリプトを使用した telnet セッションの自動化

expect を書く

以下に例を示します:

#!/usr/bin/expect

#If it all goes pear shaped the script will timeout after 20 seconds.
set timeout 20
#First argument is assigned to the variable name
set name [lindex $argv 0]
#Second argument is assigned to the variable user
set user [lindex $argv 1]
#Third argument is assigned to the variable password
set password [lindex $argv 2]
#This spawns the telnet program and connects it to the variable name
spawn telnet $name 
#The script expects login
expect "login:" 
#The script sends the user variable
send "$user "
#The script expects Password
expect "Password:"
#The script sends the password variable
send "$password "
#This hands control of the keyboard over to you (Nice expect feature!)
interact

実行するには:

./myscript.expect name user password

expect を使用することをお勧めしますが、 また、非対話的な使用には、通常のシェル コマンドで十分です。 telnet そのコマンドは stdin で受け入れられるため、ヒアドキュメントを介してコマンドをパイプまたは書き込むだけで済みます:

telnet 10.1.1.1 <<EOF
remotecommand 1
remotecommand 2
EOF

(編集:コメントから判断すると、リモート コマンドは入力または初期の SIGHUP を処理するのに時間がかかります telnet によって優雅に取られません .このような場合、入力で短いスリープを試すことができます:)

{ echo "remotecommand 1"; echo "remotecommand 2"; sleep 1; } | telnet 10.1.1.1

いずれにせよ、インタラクティブか何かになっている場合は、 expect を使用してください .


Telnet は、HTTP プロトコルを学ぶときによく使用されます。私は以前、そのスクリプトを Web スクレイパーの一部として使用していました:

echo "open www.example.com 80" 
sleep 2 
echo "GET /index.html HTTP/1.1" 
echo "Host: www.example.com" 
echo 
echo 
sleep 2

スクリプトの名前が get-page.sh の場合:

get-page.sh | telnet

html ドキュメントが表示されます。

誰かの役に立てば幸いです;)


Linux
  1. Bashスクリプトに引数とオプションを追加する

  2. BashスクリプトからTmuxセッションに参加しているかどうかを確認するにはどうすればよいですか?

  3. BashスクリプトでのLinuxスリープコマンドの使用

  1. BashスクリプトでのLinuxBasenameコマンドの使用

  2. VimでBashスクリプトを強調表示するには?

  3. bash スクリプトを使用してファイル名のスペースを置き換える方法

  1. 自動化のためのBashの使用

  2. bashスクリプトでlftpを使用してファイルを転送する

  3. EOF を使用せずに bash スクリプトからのテキスト入力を自動化する