2012-04-04 49 views
2

對於一個客戶,我寫了一箇中間件,讓他使用的以太網適配器訪問串行端口,或串行端口通過網絡,並使用Web服務中讀取數據。阻止Linux的發送USB條碼掃描儀字符到控制檯

他最近要求添加太多支持從條形碼掃描器讀取數據,我直接從設備讀取事件(/ dev/input/eventX或/ dev/input/by-id/xyz) 。

條形碼掃描器被直接連接到服務器和數據正在通過我的網絡服務器露出的web服務readed。

所有的工作正常,除了條形碼被Linux控制檯收回!

如何「阻止」(停止)系統發送內容到控制檯?

注意:沒有X11/Xorg或沒有別的,服務器是一個控制檯唯一的機器!條形碼由在Android平板電腦上執行的javascript(jsonp)驅動

+0

這可能是有益的,如果有一點更多的代碼可以使用。不過,讓我建議一個明顯的解決方案:您是否嘗試關閉stdout文件描述符[close(0)]? – Bhaskar 2012-04-04 22:05:34

+1

@BhaskarUpadhyayula stdout是fd 1. – FatalError 2012-04-04 22:09:30

+0

@FatalError感謝您指出錯誤。 – Bhaskar 2012-04-04 23:52:13

回答

0

這取決於您的Linux發行版。在Redhat/Centos上,您可以通過編輯/etc/syslog.conf和/ etc/sysconfig/syslog來關閉或過濾控制檯消息。

+0

感謝您的建議,以這種方式我可以跳過失敗的身份驗證日誌,但我想要避免他們:\ – 2012-04-05 07:31:55

1

檢查/etc/inittab,看是否有getty是,串行端口上運行。如果是,請插入一個#作爲第一個字符來註釋該行。

+0

大聲笑,這樣做我會殺了我唯一的方式來訪問系統在發生問題的情況下(我'米在阿利克斯板上工作)。沒辦法:) – 2012-04-05 07:32:44

+0

好計劃。在你提出這個問題之後,沒有公平的加入限制! :-) – 2012-04-05 11:01:02

+0

好吧,這不是一個新的約束:)如果你殺了getty,你不能訪問系統:)但是,最終,我可能會禁用auth日誌記錄 – 2012-04-05 13:46:54

0

假設條形碼正在進入控制檯,要麼是因爲您從啓動腳本運行服務器進程,而是輸出到stdout/stderr,或者它們是某種系統日誌或內核消息。

假設他們是標準的輸出,尋找到服務器在啓動腳本運行,並將輸出重定向到文件或/ dev/null的,如:

noisy-server-cmd >/dev/null 2>&1 & 
+0

條形碼只能進入控制檯,因爲它是看作是一個USB Keyboad,它是將條形碼字符發送到活動控制檯的系統本身。我想禁用這個。 – 2012-04-05 07:34:18