Scripting

如何追踪 ssh 登錄消息的來源?

  • December 29, 2013

我使用 Linux Mint 15(基本上是 Ubuntu 13.04)在我的 linux 機器上安裝了 mailutils。

當我登錄時,我得到以下資訊:

Welcome to Linux Mint 15 Olivia (GNU/Linux 3.8.0-32-generic i686)

Welcome to Linux Mint
* Documentation:  http://www.linuxmint.com
No mail.
Last login: Wed Nov  6 01:33:10 2013 from xxxxxxxxxxxxxxxxxxxxxxx
BFL SingleSC: 3s ago - [2013-11-06 01:37:33] 5s:57.83 avg:57.96 u:56.96 Gh/s

我添加了最後一行,根據我的喜好著色,作為一個自定義腳本,它可以更新我在 ~/.bashrc 中的 BFL 比特幣雜湊設備的狀態。

我現在想No mail.從 mailutils 中為其餘部分著色,尤其是行,並刪除重複的“歡迎使用 Linux Mint”消息和換行符。

我一直在專門搜尋 mailutils 部分,但在以下位置找不到對它的任何引用:

  • ~/.bashrc
  • ~/.profile
  • /etc/profile
  • /etc/profile.d/*
  • /etc/bashrc
  • /etc/init.d/*
  • /etc/rc.local
  • /etc/rc*.d (1, 2, 3, 4, 5, 6, S)

那麼 - 我如何才能找到這些消息的生成位置,以便我可以隨意修改和著色它們?

根據一些研究更新了答案

刪除重複的歡迎資訊

  • 由於您使用 ssh 登錄,因此第一條歡迎消息應該來自/etc/issue.net. 要刪除消息,只需刪除該文件的內容。
  • 要刪除第二條歡迎消息,請刪除/etc/motd.

著色關於郵件的行

要為那條線著色,我能想到的最簡單的選擇需要相當多的低級工作:選擇是您pam_mail.so自己修改和建構。

這些是修改它和安裝修改版本的步驟

  1. 從 linux-pam.org(官方項目站點)下載Linux-PAM 原始碼。
  2. 提取原始碼(這將創建一個名為 的新目錄Linux-PAM-1.1.8)並 cd 到它:
# tar xzvf Linux-PAM-1.1.8.tar.gz
# cd Linux-PAM-1.1.8
  1. 將文件中的以下行(以 開頭的+行,總共 4 行)modules/pam_mail/pam_mail.c更改為以下差異顯示(使用 生成diff -u)(文件名pam_mail.c.new只是我可以生成該差異的臨時文件):
--- pam_mail.c  2013-06-18 17:11:21.000000000 +0300
+++ pam_mail.c.new      2013-12-29 16:57:49.759298926 +0200
@@ -294,17 +294,17 @@
         switch (type)
           {
           case HAVE_NO_MAIL:
-             retval = pam_info (pamh, "%s", _("No mail."));
+             retval = pam_info (pamh, "%s", _("\\033[0;1;31mNo mail.\\033[0m"));
             break;
           case HAVE_NEW_MAIL:
-             retval = pam_info (pamh, "%s", _("You have new mail."));
+             retval = pam_info (pamh, "%s", _("\\033[0;1;31mYou have new mail.\\033[0m"));
             break;
           case HAVE_OLD_MAIL:
-             retval = pam_info (pamh, "%s", _("You have old mail."));
+             retval = pam_info (pamh, "%s", _("\\033[0;1;31mYou have old mail.\\033[0m"));
             break;
           case HAVE_MAIL:
           default:
-             retval = pam_info (pamh, "%s", _("You have mail."));
+             retval = pam_info (pamh, "%s", _("\\033[0;1;31mYou have mail.\\033[0m"));
             break;
           }
       else

我只是\\033[0;1;31m在這些消息的開頭和這些消息\\033[0m的結尾添加了內容。

**注意:**現在它將這些消息顯示為紅色;從ascii-table.com 頁面關於 Ansi Escape Sequences 的標題設置圖形模式下,您可以找到有關顏色和其他自定義終端輸出技巧的更完整列表。 4. 編譯它(**注意:**從這裡到最後我假設你的工作目錄是Linux-PAM-1.1.8,我們一開始 cd 到的同一個目錄,即 Linux-PAM 包的“根”目錄):

# ./configure
# make
  1. 備份您現有pam_mail.so的,以防新系統破壞您的系統(我懷疑它會破壞,但將原始文件安全保存總是好的):
# cp /lib/i386-linux-gnu/security/pam_mail.so ~/
  1. 將文件複製modules/pam_mail/.libs/pam_mail.so/lib/i386-linux-gnu/security/
# cp modules/pam_mail/.libs/pam_mail.so /lib/i386-linux-gnu/security/
  1. 註銷並再次登錄(或啟動新的 ssh 會話,無論如何),您應該會看到紅色的“無郵件”。消息(假設您沒有新郵件)。

舊的,過時的答案

/etc/pam.d/system-login可以通過更改文件中的以下行來禁用郵件消息

session optional pam_mail.so dir=/var/spool/mail standard

session optional pam_mail.so dir=/var/spool/mail nopen

參考來自 archlinux 的論壇。

郵件資訊之前的文本在 中/etc/motd,您可以在使用 ssh 登錄時禁用它,方法是將以下行放入~/.ssh/config

PrintMotd no

引用自:https://unix.stackexchange.com/questions/99032