プロが教える店舗&オフィスのセキュリティ対策術

cronを利用して定期的にtelnetにてメールサーバーにアクセスするコマンド
を教えていただきたいのです。
そのために/sbinなどにhogeというような実行形式のファイルをおきますよね。
そこに記述する内容なのですが、
--------------------------------------
#! /bin/sh

PATH=?bin:/sbin:/usr/bin:/usr/sbin
export PATH

telnet メールサーバー名 110
とした後に以下のコマンドを実行するようにしたいのです。
user ユーザー名
pass パスワード
list
quit
----------------------------------------
しかし上記を箇条書きにして実際に
# /sbin/hoge
実行するとメールサーバーに入るところで止まってしまい
quitコマンドを入力すると以下のエラーが返ってきます。

/sbin/hoge: user: command not found
/sbin/hoge: pass: command not found
/sbin/hoge: list: command not found
/sbin/hoge: quit: command not found

記述を間違えているのでしょうから当然のエラーとは思うのですが、肝心の
記述方法が分かりません。
これが解決しないとcrontabに記述できないわけでして、どなたか分かる方は
いらっしゃらないかと思ったのです。
よろしかったら教えて下さいませ。

A 回答 (1件)

shell scriptで書くとしたら "<<"を使うか別のファイルにかいておいて


redirectするのではないかと思います。ただ、相手の応答とかチェックでき
ないので相手が落ちてるとか、応答が遅い場合に破綻する気が...(-_^;

-----------------------------------
#! /bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH
telnet メールサーバー名 110 << FOOBAR
user ユーザー名
pass パスワード
list
quit
FOOBAR
-----------------------------------

Perlのモジュールで POP3Clientというのがあり、内部的には相手の応答をみて
コマンドを送っているようなのでそれを利用した方が手早くできるかとおもい
ます。

#!/usr/local/bin/perl
use Mail::POP3Client;
$pop = new Mail::POP3Client("me", "mypassword", "pop3.do.main");
for ($i = 1; $i <= $pop->Count; $i++) {
print $pop->Head($i), "\n";
}

参考URL:http://www.freebsd.org/cgi/url.cgi?ftp://ftp.fre …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
実は自分も急を要していたので、質問を書き込んだ後にいろいろと調べているウチに、Mail::POP3というのを見つけまして、そのサイトを参考にしてスクリプトを書いたところ目的が達成できました。お手間を取らせまして、本当にありがとうございました。

お礼日時:2001/04/25 12:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!