Re: [問題] 顯示image問題

看板Linux作者 (小州)時間11年前 (2014/10/21 00:59), 11年前編輯推噓5(500)
留言5則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《zchien (小建)》之銘言: : 公司的一個server,是灌unix程式 : 我寫了一個script,當觸發時,會pop出某個圖片 : 我發現一個現象,如果在server端的桌面 直接執行script => 可以正常顯示 : 但是透過telnet到server執行script, 會顯示can not display..... 所以你是呼叫了一個 X 的程式,所以在本機執行時候不會有問題。 : 我猜想,應該是因為telnet上面,無法顯示圖片的關係 : 但是我的目的是希望 telnet到server執行script時, : 可以在server桌面 顯示出某個圖片 這邊可能要先說明一下,X Window 本身 Protocol 是有網路支援的,也就是網路 透通的傳輸概念。X client 相關程式執行時候會去找 DISPLAY 這個變數,這是 告知 X Server 的位置,後續 X client 就可以透過該變數引導的位置與 X Server 進行溝通。一般本機環境通常 DISPLAY 變數內容可能為 ":0"。該變數格式: <host>:<display>[.<screen>] 本機環境大多 host 省略所以只有 :0 這樣格式,啟動的 display 第一個 通常 也都是 0。 那你的問題點很簡單,你用 telnet 登入時候基本上登入之後環境變數內不會帶有 DISPLAY 這個變數,因為 DISPLAY 是存在於你本機使用 startx or gdm 等這類程式 啟動之後帶入的,環境變數持續繼承所以都可以看到該變數項目,所以 X 相關程式 都可以看到該變數所以很正常執行。telnet 遠端登入並不會有該變數,所以基本上 是看不到,所以執行 X 程式只會出現 can't open display 這類訊息。 若你要登入之後能夠在遠端執行 x 程式軟體,然後畫面顯示於那台遠端的主機 server 的話,那還是可以的。比方你的遠端 server 已經啟動 X Window,目前 X 有登入某個帳號,比方是 peter 帳號好了,那你在其他主機遠端也用 peter 帳號 登入該主機,那就: export DISPLAY=":0" gedit 就是指定 DISPLAY 變數為本機那個 X Server,那後續就可以執行 gedit 等命令 啟動文書編輯程式。其中 export 是 bash shell 內建命令,若你用其他 shell 請 適當改改,像是tcsh 應該是 setenv DISPLAY ":0" 這類語法。 再來若你 X server 那邊本身登入帳號是 mary,但是你遠端登入是 peter 帳號, 上面方式會被拒絕,一般大多會顯示 Client reject 錯誤訊息,因為帳號沒有一致所以 不能這樣做.. 這是安全性考量,因為允許任何人遠端登入到該主機就可以跑 X 程式顯示 於不是自己帳號的X Window 內不合理。若有這個需求,mary 可以在 X Window 那 server 上開個終端機執行 xhost + 這個命令,表示接受任何連線來源可以存取該 X server, 那就不會被拒絕了。 : 測試過寫在crontab,也不行 cron 乃是背景服務程式,也是沒有該環境變數帶入的,問題同上。 : 不知道是否有其他方法 : 另外想再請教一個指令, 我寫另外一個script, : 會使用say這個指令,在server桌面,顯示我要說的話 : 我將這say指令的script放在crontab執行時,無法在server桌面,顯示我要說的話 : 但是在server端執行,或是telnet到server執行都可以 : 不知道是否有人知道原因 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.33.71.87 ※ 文章網址: http://www.ptt.cc/bbs/Linux/M.1413824340.A.656.html

10/21 03:57, , 1F
推這篇 蠻清楚的
10/21 03:57, 1F

10/21 13:14, , 2F
太強大啦
10/21 13:14, 2F

10/21 14:11, , 3F
學習學習~
10/21 14:11, 3F
※ 編輯: kenduest (175.182.250.59), 10/21/2014 16:39:23

10/21 23:31, , 4F
好強呀,明天馬上測試看看
10/21 23:31, 4F

10/22 20:48, , 5F
真的可行,謝謝
10/22 20:48, 5F
文章代碼(AID): #1KHJzKPM (Linux)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1KHJzKPM (Linux)