c# - 无法使用 C# 和 SSH.NET 从 Windows 运行 Unix 服务器中的用户脚本

标签 c# .net ssh ssh.net

我有一个在 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 变量。我也会尝试其他建议的选项,如果可行的话,我会编辑帖子。

最佳答案

您需要调试您的 unix 脚本。修改脚本以通过管道将 stderr 传输到文本文件,然后查看它的内容。例如,脚本可能依赖于环境的属性,当您使用 ssh.net 运行它时这些属性会发生变化

关于c# - 无法使用 C# 和 SSH.NET 从 Windows 运行 Unix 服务器中的用户脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33531182/

相关文章:

c# - .Net 与 C++(性能)

c# - 如何使用windows应用程序在第三方网站上填写并提交网页表单?

c# - 在 WinForms 中为 StatusStrip 中的文本着色

c# - 在 ASP.NET Identity Core 中,我可以更改 UserToken 主键吗

c# - DataGridView 自定义排序

c# - 写入文件时如何等待

.net - 该行业的CodeRush技巧

node.js - 使用接受转发端口的 NodeJs 的 SSH 服务器

linux - Ansible - 从远程主机读取环境变量

linux - 如何允许从VSTS到Linux的SSH连接