有没有人知道从C#编写的Windows服务启动bash脚本(在Linux机器上运行)的优雅方式?如何从Windows服务在Linux上运行脚本?
我只能想到一些组合的腻子做自动登录和登录时自动运行命令。 但是,这似乎笨拙和有点不安全。
安全性不需要非常高,因为这两个盒都驻留在企业防火墙内部的局域网中。 只有系统管理员可以登录到Windows框。
有没有人知道从C#编写的Windows服务启动bash脚本(在Linux机器上运行)的优雅方式?如何从Windows服务在Linux上运行脚本?
我只能想到一些组合的腻子做自动登录和登录时自动运行命令。 但是,这似乎笨拙和有点不安全。
安全性不需要非常高,因为这两个盒都驻留在企业防火墙内部的局域网中。 只有系统管理员可以登录到Windows框。
您可以使用带密钥验证的SSH来运行命令,而不必在应用程序中输入或存储密码。你必须能够在Linux服务器密钥认证(按照指示here创建并存储在服务器上的相应位置的键),然后就可以通过的Process.Start在应用程序运行
plink -i <key_location> [email protected] "command"
()
plink是与PuTTY捆绑在一起的命令行工具。编辑:如果你不想PKI(这可能不是一个好主意,但你知道你的环境),你可以在Linux中设置一个rsh服务器,并通过rsh发送命令(Cygwin's rsh可能更好与Linux的盒子)
如果Linux机器上运行桑巴,你可以使用魔法的脚本 http://oreilly.com/catalog/samba/chapter/book/ch08_02.html
我可能会运行在Linux中Web服务器,并通过HTTP请求
运行脚本,如果他们背后防火墙可以在Linux机器上创建一个等待给定端口命令的迷你服务器。 Windows可以telnet到该端口并发送命令。
我这样做,Cygwin包括ssh和cron的可选软件包。几乎和使用真正的Unix机器一样优雅。
因为你问的东西很容易从C#中使用,webserver方法可能是最好的:快速和容易,并且不需要密码。在/ var/www/cgi-bin中设置Linux脚本,并使用C#魔法启动它以打开http套接字并调用http://hostname/cgi-bin/programname。
感谢这个想法温科。 plink基本上是我已经想到的。但它依赖于接受的密钥,当你以不同的用户身份运行时,这往往会成为窗口方面的痛苦,我想我正在寻找一些不依赖于使用PKI的方法。对不起,如果我原来的问题不够清楚。 – 2009-10-01 05:17:27
顺便说一下,如果Linux bos上的目标用户总是相同的,您可以共享密钥并将其存储在一个公共位置,这样就没有任何痛苦。 – 2009-10-01 05:53:33