使用Linux命令來傳送資訊

luckyfriends發表於2013-04-05

使用Linux命令來傳送資訊(轉貼)2007-10-08 12:13  Linux發展到今天,很多功能已經可以在視覺化的介面中來完成。不過在很多情況下,命令還是非常有用的,特別是Linux系統管理員可以透過命令傳送系統休息、佈告欄資訊、公共資訊的方式與其他使用者溝通。 

  設定登入提示 

  /etc/motd檔案的用途 

  /etc/motd?即message?of?today(佈告欄資訊),每次使用者登入時,/etc/motd檔案的內容會顯示在使用者的終端。系統管理員可以在檔案中編輯系統活動訊息,例如:管理員通知使用者系統何時進行軟體或硬體的升級、何時進行系統維護等。如果shell支援中文,還可以使用中文,這樣看起來更易於瞭解。/etc/motd?缺點是,現在許多使用者登入系統時選擇自動進入圖形介面,所以這些資訊往往看不到。 

  /etc/issue檔案的用途 

  /etc/issue檔案的使用方法與/etc/motd檔案相差不大,它們的主要區別在於:當一個網路使用者或透過串列埠登入系統上時,/etc/issue的檔案內容顯示在login提示符之前,而/etc/motd內容顯示在使用者成功登入系統之後。 

  使用write命令 

  使用者可以使用write命令給其他線上使用者傳送訊息。格式: 

  #write username [tty] 

  在Shell提示符號輸入write,username指接受傳送資訊的使用者名稱。如果一個使用者多次登入到系統, tty引數指定要傳送的終端。使用write傳送資訊的前提條件是該使用者已經登入到系統。否則會出現以下提示: 

  #write cjh 
  write:cjh is not logged in 

  可以使用who命令查詢登入使用者名稱稱。接著可以輸入要傳送的資訊。當輸入完畢後,鍵入EOF表示資訊結束,用Crtl+D組合鍵傳送資訊。輸入內容會出現在使用者的螢幕上,同時通訊中止。 

  如果在網路上可以使用write命令在username後加入主機名稱或域名,建立網路通訊。如果要和cao主機上的bj使用者通訊使用命令: 

  #write bj@cao 

  可以使用rusers命令列出所有區域網上的登入使用者。 

  wall命令 

  如果想要傳送一條資訊給系統中所有使用者,可以使用wall命令,wall表示:write all。輸入wall,然後編輯資訊,如果shell支援可以使用中文。然後使用Crtl+D組合鍵傳送資訊。這樣系統所有登入使用者的桌面會收到資訊。如果在網路上,可以使用rwall命令把資訊傳送到區域網上所有的使用者。 

  talk命令 

  talk命令可以和另一個登入系統使用者實現雙向對話。系統管理員輸入資訊,使用者也可以輸入自己的資訊。雙方都可以看到交流時的螢幕資訊。格式: 

  #talk username 

  一個例子: 

  #talk b 

  對方螢幕顯示: 

  Message from Talk_Daemon@ at 7:18 ... 
  talk: connection requested by b@. 
  talk: respond with: talk b@ 

  然後進入talk分屏介面,雙方輸入的資訊。會出現的對方的螢幕。 

  使用者完成會話後使用Crth+C斷開連線。和write一樣可以使用在username後加入主機名稱或域名,建立網路會話連線。 

  mesg 命令 

  使用者可以阻止其他使用者給自己傳送訊息打斷工作,使用mesg n命令禁止其他使用者傳送訊息。當別人試圖再使用write給他傳送資訊時,傳送者將會看見提示: 

  #write: user has messages disabled on pts/n? 

  但是超級使用者可以給任何使用者傳送訊息,即使使用者使用mesg n命令。要恢復接受資訊輸入: 

  mesg -y 

  Linux伺服器執行的軟體主要是開源軟體,而且都在不停升級,穩定版和測試版交替出現。如果你是一個Linux網管員,你經常需要上相應的網站看,是否有補丁,是否有了bug fix,是否需要升級。網路管理員還要給使用者提供安全服務。對使用者要定期傳送安全資訊,是讓使用者具有安全意識。透過使用以上命令可以更好幫助管理使用者。

在UNIX作業系統中,為了通知使用者某條資訊,我們常常採用向使用者能看到的螢幕寫資訊的方法實現。 
   向單一螢幕傳送資訊 
   每個登入主機系統的使用者都分配有一個終端號,例如主控臺上的12個螢幕分別為tty01~tty12,從多使用者卡上登入一般有tty2a、tty2b、tty21a……等等終端裝置號,如果是遠端登入則為ttyp0、ttyp1等虛擬終端號。它們對應的終端裝置檔案都在/dev目錄下。 
  echo'讓我告訴你:……' > /dev/tty03 

  這種方法使用了輸出轉向符“>”直接寫終端檔案/dev/tty03來實現向螢幕傳送資訊。與以下其他三種方式不同的是,這種方法是針對終端的,而不是針對登入使用者的,所以即使該終端沒有使用者登入,使用這種方法也可以向螢幕傳送資訊。但其他三種方法只能對有使用者登入的螢幕傳送資訊。 


   向指定使用者傳送資訊 


   同一個系統使用者可以在多個終端登入,例如超級使用者可以在主控臺三號螢幕,同時也可以在多使用者卡連線的tty21c終端登入。此時要向指定螢幕傳送資訊可以用write命令。 

  write root tty03 

  如果使用者只在一個螢幕登入,可以省略第二個引數。利用這個命令可以實現聊天功能,因為每次回車後資訊即傳送至指定螢幕,這種特性是其他幾種傳送資訊方式無法實現的。“終止”使用Ctrl+d組合鍵。 


   向登入主機的所有使用者傳送資訊 


   多使用者系統特有的廣播概念:像無線廣播一樣,讓所有人都聽到你的聲音。 

  wall 

  wall -g group 

  wall -g root see.txt 

  例子中“-g”引數指定使用者組,實現向特定組傳送資訊的功能。換言之,系統中有多個使用者組登入,你只想將資訊廣播到ROOT超級使用者組屬性登入的使用者螢幕,可以用“-g root”引數。無引數的wall命令向所有登入系統的使用者傳送螢幕資訊,一般用於要緊急關機的場合,提示使用者在規定時間儲存資料、退出系統。要廣播的資訊可以是一個文字檔案中的內容,也可以直接輸入,但與write不同的是,直接輸入時每行資訊回車後並不傳送,只有在Ctrl+d組合鍵確認輸入結束後才全部傳送。需要注意的是:如果系統中無其他使用者登入,各個螢幕(終端)都處於Login:等待登入狀態,那麼wall命令傳送的資訊就不會顯示在螢幕上。 


   向網路中的使用者螢幕傳送資訊 


   上面的三種方法只能對本地主機的螢幕傳送資訊,實際工作中我們會需要向網路中多臺Unix主機的使用者螢幕做同樣的操作,以便統一行動,此時就要用到網路廣播命令rwall。 

  rwall 123.45.67.89 < see.txt 

  它的引數就是要接受資訊的Unix主機IP地址,使用“<”轉向符將文字檔案資訊傳送到指定主機的所有有使用者登入的螢幕上。rwall命令不需要登入對方主機,不需要口令。實際應用中一般都作成一個shell文件,將要接受資訊的主機列入其中,然後統一傳送。例如shell文件為gb: 

  rwall 123.45.67.89 < $1 

  rwall 123.45.67.90 < $1 

  rwall 123.45.67.91 < $1 

  …… 

  傳送資訊時:./gb see.txt。 

  同樣,遠端主機的螢幕只有有使用者登入才能接受到資訊,在login:狀態下不會有資訊傳送到螢幕上。如果對方主機已經關閉,或者線路出現故障,系統會提示:“Couldn't contact 123.45.67.89 : RPC : Timed out”。 

  以上方法、命令在SCO Unix5.05系統中測試透過,在其他Unix系統中可能命令的具體形式會有所變化。

http://www.cnblogs.com/sunyubo/archive/2011/07/19/2282060.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14710393/viewspace-757777/,如需轉載,請註明出處,否則將追究法律責任。

相關文章