2009-10-01 65 views
2

有沒有人知道從C#編寫的Windows服務啓動bash腳本(在Linux機器上運行)的優雅方式?如何從Windows服務在Linux上運行腳本?

我只能想到一些組合的膩子做自動登錄和登錄時自動運行命令。 但是,這似乎笨拙和有點不安全。

安全性不需要非常高,因爲這兩個盒都駐留在企業防火牆內部的局域網中。 只有系統管理員可以登錄到Windows框。

回答

2

您可以使用帶密鑰驗證的SSH來運行命令,而不必在應用程序中輸入或存儲密碼。你必須能夠在Linux服務器密鑰認證(按照指示here創建並存儲在服務器上的相應位置的鍵),然後就可以通過的Process.Start在應用程序運行

plink -i <key_location> [email protected] "command" 

()

plink是與PuTTY捆綁在一起的命令行工具。編輯:如果你不想PKI(這可能不是一個好主意,但你知道你的環境),你可以在Linux中設置一個rsh服務器,並通過rsh發送命令(Cygwin's rsh可能更好與Linux的盒子)

+0

感謝這個想法溫科。 plink基本上是我已經想到的。但它依賴於接受的密鑰,當你以不同的用戶身份運行時,這往往會成爲窗口方面的痛苦,我想我正在尋找一些不依賴於使用PKI的方法。對不起,如果我原來的問題不夠清楚。 – 2009-10-01 05:17:27

+0

順便說一下,如果Linux bos上的目標用戶總是相同的,您可以共享密鑰並將其存儲在一個公共位置,這樣就沒有任何痛苦。 – 2009-10-01 05:53:33

1

運行腳本,如果他們背後防火牆可以在Linux機器上創建一個等待給定端口命令的迷你服務器。 Windows可以telnet到該端口併發送命令。

0

我這樣做,Cygwin包括ssh和cron的可選軟件包。幾乎和使用真正的Unix機器一樣優雅。

0

因爲你問的東西很容易從C#中使用,webserver方法可能是最好的:快速和容易,並且不需要密碼。在/ var/www/cgi-bin中設置Linux腳本,並使用C#魔法啓動它以打開http套接字並調用http://hostname/cgi-bin/programname

相關問題