スクリプトでパスワードを求めるGmailメッセージを確認するには?

スクリプトでパスワードを求めるGmailメッセージを確認するには?

Ubuntu 14.04では、zshを使用してSSH経由でPuttyを使用しており、キーボードのキーバインディングを設定しています。私はzshが私のファンクションキーを使用していないようだったので、私はキーの絵が示すものと同じようなことをするようにスクリプトを設定する必要があると思いました。私は電子メールボタンを操作していますが、うまくいきますが、もっと良かったらいいです。これが私が持っているものです~/.zshrc

# Ensure we are in emacs mode
bindkey -e

# This requires you to enable the ATOM feed in Gmail. If you don't know what that is then
# go ahead and try this and let it fail. There will then be a message in your inbox you
# can read with instruction on how to enable it. Username below should be replaced with 
# your email id (the portion of your email before the @ sign).
_check-gmail() {
    echo
    curl -u username:password --silent "https://mail.google.com/mail/feed/atom" | tr -d '\n' | awk -F '<entry>' '{for (i=2; i<=NF; i++) {print $i}}' | sed -n "s/<title>\(.*\)<\/title.*name>\(.*\)<\/name>.*/\2 - \1/p"
    echo
    exit
}
zle -N _check-gmail


# F2 - Display Unread Email
bindkey "^[[12~" _check-gmail

上記のように使用すると機能します。 2つの質問があります。

何よりも、パスワードをこのようにスクリプトに残すよりも、私にパスワードを求める方が良いです。:passwordコマンドラインからカールコマンドを削除すると簡単に実行できますが、このファイルで使用すると問題が発生します。具体的には、最初のキーストロークは許可されているように見えますが、残りのキーストロークはパスワード入力以外のシェルで終了します。

次に、シェルで初めて実行したときにうまくいきました。その後、プロンプトは正しく返されません。Enter他のメッセージを受信するには、ボタンを押す必要があります。この問題を解決する方法はありますか?

.zshrcファイルの完全なキーバインディングセクションを次の場所に配置しました。GitHub

ベストアンサー1

問題は、curl一般的な端末設定が必要であり、zle端末設定を変更したくないことです。したがって、次のように書くことができます。

_check-gmail() {
  zle -I
  (
    s=$(stty -g)  # safe zle's terminal setting
    stty sane     # sane settings for curl
    curl -u username --silent "https://mail.google.com/mail/feed/atom" |
     tr -d '\n' | awk -F '<entry>' '{for (i=2; i<=NF; i++) {print $i}}' |
     sed -n "s/<title>\(.*\)<\/title.*name>\(.*\)<\/name>.*/\2 - \1/p"
    stty $s       # restore zle's terminal settings
  ) < /dev/tty
}

おすすめ記事