expect を使うまでもないような単純なデータ送信を telnet で自動化する。
キモは pipe で telnet に送ることができる点と、sleep でタイミングを調整する点。
作成 2010.01.27
更新 2016.03.18
更新 2016.03.18
bash で telnet の自動化
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