なぜ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] )

答え2

故意に。簡単なコマンドを実行すると、システムの他の誰でもコマンドラインの内容を見ることができるため、psパスワードを必要とするほとんどのソフトウェアはコマンドラインから渡されたパスワードを受け入れません。

使用できるいくつかのトリックがありますが、探しているものがwishありexpectます。少ない複雑ではありません...

答え3

この.netrcファイルを使用してパスワードを指定できます。これについてはマニュアルに記載されています。http://www.fetchmail.info/fetchmail-man.html#14。例:

machine hermes.example.org
login joe
password topsecret

答え4

この質問が古くなったことを知っていますが、他の人が答えを見つけに来たら、これが役に立つことを願っています。これが私がやろうとしていることです。

echo "メールパスワードを転送するためのメールサーバーのポーリング" |

私は実際にOPとOPが答えの1つに投稿したコメントに基づいてこれを組み合わせました。 OPが見逃したような唯一のことは、stdinに設定を送信することはまだ設定規則に従う必要があるということです。したがって、メールサーバーは構成の最初のエントリでなければならず、パスワードはまだ「pass」で始まる必要があります。他のすべては、標準入力を介して渡されるブロックまたはパラメータにあります。

関連情報