如何从Windows执行Unix shell脚本

时间:2009-04-21 14:46:40

标签: .net windows unix shell cross-platform

我有一个AIX脚本,我想从.NET应用程序运行。我并不反对开启Windows批处理文件,如果这给了我更好的选择。

我在Google上看到的大部分内容都与使用rsh或Plink等工具或使用ssh或telnet有关。我没有访问rsh或Plink(虽然我有PuTTY,可能会得到Plink)。我可以ssh到AIX框但是telnet被禁用。

我需要一种传递用户凭据的方法。

有人可以推荐从Windows应用程序调用Unix脚本的最佳方法吗?

4 个答案:

答案 0 :(得分:5)

安装cygwin。包括ssh函数。设置你的ssh密钥 - windows上的私钥,AIX盒子上的公钥。然后你可以运行“ssh user @ aixbox script-on-aix-box.sh”。

最好在AIX上安装脚本,尽管您可以先使用scp将文件复制到AIX。通过ssh传递一个长命令行是容易出错的 - 不是因为它是ssh,而是因为正确设置从.NET通过ssh传递到ksh或者在AIX上运行的任何东西的转义只是很痛苦。最好保持尽可能简单,最好只是一个命令,然后可以是一个执行多项操作的脚本。

回答你的评论,这需要很长时间才能发表另一条评论:

(1)为什么使用cygwin的ssh实用程序而不是Windows ssh实用程序更好?

a)我知道它更好,所以我不知道建议任何Windows ssh实用程序(我甚至不知道Windows带有ssh实用程序),以及b)cygwin的ssh实用程序更有可能成为标准ssh与我们熟悉的unix怪胎爱。 : - )

(2)有什么关键?这是否允许跨平台身份验证,还是只是一种非对称加密密码的方式?

密钥允许无密码访问。如果您将私钥设置为无密码(通常不推荐,但如果您可以保证机器安全,它适用于自动化工具),您的工具将能够在没有密码提示的情况下进行ssh - 这使事情变得更容易

答案 1 :(得分:3)

ssh eximadmin@172.16.12.10“cat somefile.log”

(其中cat somefile.log将替换为您要运行的命令)

我认为最简单的方法是从您的.net应用程序调用批处理文件中调用您的ssh程序(无论是ssh,plink还是其他)。

答案 2 :(得分:1)

我是第二个cygwin建议,但你有另一个选择是微软的Services for UNIX

答案 3 :(得分:1)

我会做的是在.Net应用程序可以运行的AIX机器上设置服务(https)接口。这实际上是您希望如何在AIX机器上公开脚本的问题。恕我直言Java + Tomcat很容易在AIX框上进行设置,只需确保限制暴露,和/或需要AIX服务的身份验证票。这不是一个.Net问题,而是一个架构决策。

- 编辑 -

正如其他人所建议的那样,你也可以使用Cygwin。您也可以使用.Net的SSH组件,这对您来说可能更透明。 (CommercialFOSS