作成 2010.01.27
更新 2016.03.18
bash で telnet の自動化
expect を使うまでもないような単純なデータ送信を telnet で自動化する。
キモは pipe で telnet に送ることができる点と、sleep でタイミングを調整する点。
HTTP HEAD リクエスト
ローカルホストのWebサーバーに対して HEAD をリクエストし、結果を www.head.txt に保存する
#!/bin/bash
CONNECT_HOST='127.0.0.1'; export CONNECT_HOST
(sleep 1; echo "HEAD / HTTP/1.1";
 sleep 1; echo "host: $CONNECT_HOST";
 sleep 1; echo;
 sleep 1; echo; ) | telnet $CONNECT_HOST 80 >> www.head.txt
SMTP
user1@example.com から target1@example.com へメールを送信
#!/bin/bash
MAIL_DATE=`LC_ALL=C date +"%a, %d %b %Y %T %z"`; export MAIL_DATE
CONNECT_HOST='127.0.0.1'; export CONNECT_HOST
(sleep 1; echo "HELO localhost.localdomain";
 sleep 1; echo "MAIL FROM: user1@example.com";
 sleep 1; echo "RCPT TO: target1@example.com";
 sleep 1; echo "DATA"
 sleep 1; echo "From: MAIL User <user1@example.com>"
          echo "Subject: mail from user1"
          echo "To: MAIL Target <target1@example.com>"
          echo "Date: $MAIL_DATE"
          echo ""
          echo "mail from user1 body"
          echo "."
 sleep 1; echo "QUIT"
 sleep 1; echo; ) | telnet $CONNECT_HOST 25
タグ: Linux bash

©2004-2017 UPKEN IPv4