有没有办法从 c# 控制台应用程序 运行 shell 文件服务器上的 shell 脚本

Is there a way to run a shell script on a linux file server from a c# console application

我在 linux 文件服务器上有一个充满 DICOM 的目录。我将目录映射为网络驱动器,并创建了一个用于修改 DICOM 标签的 C# 控制台应用程序,修改 DICOM 标签是我在导入到我们的数据库之前必须做的事情。

当我在服务器中时,我可以运行以下命令将此目录中的所有内容导入我的数据库:

for x in `ls -d1 *`;
do
    dcmbase_import -U p_mfdid1 -n -l info -i "$x:spiromics:file:H:SPIROMICS";
done

我想知道我是否可以从 c# 应用程序中 运行 上面的代码。例如,有没有办法访问 linux 文件服务器并执行 shell 脚本?

目前我必须 运行 我的 c# 应用程序改变头,然后手动访问服务器和 运行 shell 脚本。我很想将所有这些都包含在一个应用程序中,这样我就可以在一天结束时 运行 它并让它在晚上处理和导入。

您不能 运行 通过网络共享的 shell 脚本,因为那样会 运行 它在您的本地计算机上,您需要 运行 它在Linux 机.

远程执行代码的常用方法是运行使用SSH 或RPC 调用。如果可能的话,我会避免使用 RPC,因为即使它更强大,它也需要更复杂的设置。

从 Karl-Johan Sjögren 的 answer on this question, C# send a simple SSH command 中,我找到了一个 git 项目用于 .NET 中的 SSH 调用以及一个可以帮助您入门的小存根。您可以将 hostnameOrIp 更改为您的 Linux 服务器,并将命令更改为 运行 您的脚本。

SSH.NET

using (var client = new SshClient("hostnameOrIp", "username", "password"))
{
    client.Connect();
    client.RunCommand("etc/init.d/networking restart");
    client.Disconnect();
}