2009-10-01 75 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

相关问题