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