【发布时间】:2015-11-04 20:15:51
【问题描述】:
我有一个在 Unix 服务器(准确地说是 Solaris)上运行的 Perl 脚本。该脚本使用 ftp 实用程序来调节大型机服务器中的文件,然后将它们传输到 Unix 服务器。
最近,我正在尝试使用 Windows 窗体和 C# 开发一个 Windows 桌面应用程序。我正在尝试使用 codeplex 提供的 SSH.NET 库。问题是,每当我从应用程序运行正常的 Unix 命令时,它都可以工作,但是当我尝试运行脚本时,它就不起作用了。我检查了连接并且应用程序正确连接到服务器。我使用了以下两种方法,但没有运气:-
using (ssh client = new SshClient("Ip", "username", "password"))
{
client.Connect();
SshCommand cmd = client.RunCommand("script");
client.Disconnect();
}
using (ssh client = new SshClient("hostnameOrIp", "username", "password"))
{
client.Connect();
SshCommand cmd = client.createCommand("script");
cmd.execute();
client.Disconnect();
}
如果有人指出我正确的方向,那将是一个巨大的帮助。
编辑:- 使用完整路径运行脚本已作为调用的非交互式 shell 在加载时不读取 /etc/profile/ env 变量。我也会尝试其他建议的选项,如果可行,我会编辑帖子。
【问题讨论】:
-
它不起作用:这是什么意思?它不运行?还是运行时失败?尝试运行它时的输出是什么?
-
没有输出。输出应该是经过一些调整后要从大型机服务器传输到 nix 服务器的相关文件。如果脚本失败,则不会传输文件并且没有其他输出。不过,我可以检查 stderr 并深入了解它。当我有机会时,我会做第一件事。