如何从Windows服务在Linux上运行脚本?

时间:2009-10-01 04:58:48

标签: windows linux bash service scripting

有没有人知道用C#编写的Windows服务启动bash脚本(在linux机器上运行)的优雅方法?

我只能想到一些putty做自动登录和登录时自动运行命令的组合。 但这看起来很笨拙而且有点不安全。

安全性不需要非常高,因为两个盒子都位于公司防火墙内部的LAN上。 只有系统管理员才能登录到Windows框。

5 个答案:

答案 0 :(得分:2)

您可以使用带密钥身份验证的SSH来运行命令,而无需在应用程序中输入或存储密码。您必须在Linux SSH服务器中启用密钥身份验证(按照说明here创建密钥并将其存储在服务器上的适当位置)然后您可以运行

plink -i <key_location> user@machine "command"
通过Process.Start()

在您的应用程序中

plink是与PuTTY捆绑在一起的命令行实用程序。

编辑:如果你不想要PKI(这可能不是一个好主意,但你知道你的环境),你可以在linux框中设置一个rsh服务器,并通过rsh发送命令({使用linux box可能会更好地运行{3}}

答案 1 :(得分:1)

如果他们在防火墙后面,您可以在linux机器上创建一个等待命令在给定端口上的迷你服务器。 Windows可以telnet到该端口并发送命令。

答案 2 :(得分:0)

如果linux框运行samba,则可以使用魔术脚本 http://oreilly.com/catalog/samba/chapter/book/ch08_02.html

我可能会在linux盒子上运行一个webserver并通过http请求运行脚本

答案 3 :(得分:0)

我使用Cygwin执行此操作,包括ssh和cron的可选包。几乎和使用真正的Unix机器一样优雅。

答案 4 :(得分:0)

由于您要求从C#中轻松使用某些内容,因此Web服务器方法可能是最好的:快速简便,无需密码。在/ var / www / cgi-bin中设置Linux脚本并使用C#magic启动它以打开http套接字并调用http://hostname/cgi-bin/programname