なぜfetchmailのパスワードをエコーできないのですか?

なぜfetchmailのパスワードをエコーできないのですか?

fetchmailを設定しようとしています。 fetchmailrcの構文を扱う前に(問題で見つかったエラーレベルは、私が理解していない問題のさまざまな側面と相乗効果を発揮するため、一度に新しいことを1つずつ)すべてのプロセスを進めることにしました。コマンドラインによるオプション。

すべてのテストに対してパスワードを入力するのは面倒で、スクリプトにパスワードを渡したいと思います。 fetchmailのコマンドラインオプションで--passなどのエントリが見つからなかったので、パスワードをfetchmail alaに再表示することが可能になると思いました。

echo "dohadeer"| fetchmail  --all -p pop3 -k pop.gmail.com --ssl -d0   --user [email protected]

私はそれを無視し、「fetchmailパスワードコマンドライン」を検索し、上記の技術が機能すると主張するいくつかのヒットを得ました!しかし、試してみるとエラーが発生します。

fetchmail: can't find a password for [email protected]@pop.gmail.com.

元の問題に対する解決策を見つけることができますが、このアプローチがうまくいかない理由はわかりません。明らかに、私はLinuxについて理解していないものがあり、それを見つけたいと思います。

ベストアンサー1

エラーメッセージが表示されるのは、fetchmailの標準入力が端末ではなくパイプに接続されているためです。

man fetchmail | less -Ip 'user authentication step failed'

# from: 
# http://opensource.apple.com/source/fetchmail/fetchmail-33/fetchmail/fetchmail.c

...
if (!isatty(0))   // <-- tests if stdin is a terminal (added)
{
   fprintf(stderr,
      GT_("fetchmail: can't find a password for %s@%s.\n"),
         ctl->remotename, ctl->server.pollname);
         return(PS_AUTHFAIL);
         } else {
...

ただし、次のトリックを使用して疑似端末で実行するscriptことができます。fetchmail

(sleep 0.3; echo "dohadeer") | 
( script -q /dev/null fetchmail --all -p pop3 -k pop.gmail.com --ssl -d0 --user [email protected] )

おすすめ記事