2011-03-11 80 views
1

我有一個python腳本,輸出/打印大型數組(大小爲50MB)到屏幕上。該腳本在machineA上運行。是否有可能將這個輸出'管道'到machineB,在那裏它將被處理?從python腳本輸出到遠程機器的輸出?

我知道我可以將輸出保存在machineA的文件中,然後將文件發送到machineB。我只是想知道是否可以這樣做,而不必先將數據保存到文件(在machineA上)。

任何解決方案(python,bash shell,其他想法)將不勝感激。

回答

3

這是nc(netcat的)工作......在machineB你做

nc -l 12345 | processing_program 

該命令將在「監聽模式」等待連接開始的netcat。一旦建立連接,來自網絡的內容將被髮送到標準輸出,發送給標準輸入的內容將被髮回給連接的任何人。

之後,你去machineA和運行

generating_program | nc machineB 12345 

這將指示netcat來開始machineB(端口12345)連接併發送不管它從標準輸入通過導線變。無論從該連接返回的是發送到標準輸出。

+0

你的答案更好(不需要密碼或運行服務)。 – JCCyC 2011-03-11 20:44:58

+0

6502:謝謝。 'machineB'可以同時聽20臺機器嗎?另外,我是否必須主動'打開'machineB'上的監聽端口? – user3262424 2011-03-11 20:52:28

+0

使用該命令'machineB'將會監聽誰連接(所以這當然不安全......)沒有任何身份驗證的互聯網上的任何人都可以使用'machineB'將數據發送到'processing_program',如果可以到達該機器!)。一旦客戶端關閉連接,'nc'就終止,因此你最終需要在一個循環中重新運行該命令。如果「打開監聽端口」是指在防火牆上打個洞或者在路由器中定義一個虛擬服務器路徑,那麼答案是肯定的。 'nc'只是在指定的端口上進行TCP偵聽。 – 6502 2011-03-11 21:05:44

1

使用Netcat tool您可以輕鬆地將數據從一臺機器傳輸到另一臺機器。

1

你可以做不同層次的 - 這裏有幾個選項

  1. 使用ssh來管 MYPROG | SSH remotemachine myotherprog
  2. 使用NFS(如果去到一個文件
  3. 使用netcat的(NC)
  4. 使用像節約

這取決於解決方案如何固體&永久必須

+0

非常有幫助。謝謝你。 – user3262424 2011-03-11 20:54:23

1

也許沿着這條線

myPythonScript | ssh [email protected] "sh -c 'cat >myfile.txt'" 

警告:拉完全脫離我的腦袋,未經測試!

1

在machineA的:

python script-on-machineA.py --options | ssh machineB tee /file/on/machine/B.txt 

另外,machineB上:

ssh machineA python /path/to/script-on-machineA.py --options | cat > /file/on/machine/B.txt 
+0

這會很好,因爲我可以輕鬆地在機器之間進行SSH連接。 – user3262424 2011-03-11 20:55:02