我有一个AIX脚本,我想从.NET应用程序运行。我并不反对开启Windows批处理文件,如果这给了我更好的选择。
我在Google上看到的大部分内容都与使用rsh或Plink等工具或使用ssh或telnet有关。我没有访问rsh或Plink(虽然我有PuTTY,可能会得到Plink)。我可以ssh到AIX框但是telnet被禁用。
我需要一种传递用户凭据的方法。
有人可以推荐从Windows应用程序调用Unix脚本的最佳方法吗?
答案 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组件,这对您来说可能更透明。 (Commercial和FOSS)