完了時に、現在ユーザーに電子メールを送信するBash関数を作成しています。ユーザーのメールアドレスを取得する正式な方法や一般的な方法があるかどうか疑問に思います。私の現在の計画は単にを使用することですが$EMAIL
、これは十分にうまく機能します。ただし、現在のユーザーの電子メールアドレスを参照するより良い方法または「正しい」方法があるかどうかはわかりません(もちろん設定されていると仮定)。
参考にしてください。いいえシステムのローカルメールに電子メールを送信しようとしますが、代わりにリモートアドレスに電子メールを送信しようとしています。
答え1
本当にこれをしたい場合(「スクリプト内のユーザーが使用したいアドレスを指定する必要があると思います」)、いつでも電子メールアドレスまたは他の~/.emailaddress
ローカルファイルを入力するように求めることができます。ホームディレクトリとファイルに対する十分な権限がある場合は機能できます。
正しいアプローチは、ローカルメール配信を設定し、ローカルメールを使用するか~/.forward
。
私の考えでは、合理的なアプローチは、環境変数ではなくファイルに「外部」Eメールアドレスを保存することです。スクリプトで環境変数を設定/使用できない状況がたくさんあります。ルートとしてファイルを読み取ることを強制することはできますが、ユーザーにどのようにenvvar定義を保存したのかをユーザーに知らせることはできません。
これを行う「最良の方法」はありません。メールアドレスはユーザー情報なので、ユーザーの管理に属します。 LDAPを使用している場合、dawudの回答はLDAPをどこに配置して検索するかを教えてくれます。通常の古いものを使用している場合は、/etc/passwd
コメントフィールドがあります。ホームディレクトリに保存する場合(シェル環境でその情報を提供しているユーザーについて話すときに実行する作業)、ローカルメールがあるか必要なのかによって、2つの方法があります。 。
すでにLDAPを使用している場合は、dawudのアドバイスに従うのが最善の方法です。そうでない場合は、ほんの数個の電子メールアドレスを保存するためにLDAPを設定することは過剰であり、最善のアプローチではありません。明確な答えが必要な場合は、問題をより具体的に説明する必要があります。
答え2
そのようなことはありません。
しかし、期待できるものはmail
属性は、次のようにLDAPディレクトリに存在します。RFC 4524。
次のコマンドラインツールがあります。ldapsearch(1)
、シェルスクリプトからこれらの値を取得するために使用できます。
もちろん、ユーザー情報を他のデータベースに保存することもできます。