Linux命令在使用SharpSSH库时不能从.NET执行

我试图通过.NET使用SharpSsh .NET库在Linux中运行一个非常简单的命令。 该代码不会抛出任何exception,它仍然无法正常工作。 当我从terminal运行sudo php /www/data/{directory}/scripts/create_file.php命令时,它会创build文件。 而当我从terminal运行sudo php /www/data/{directory}/scripts/delete_file.php命令时,它将删除该文件。 从.NET调用此代码时,我看不到正在创build/删除的文件。

看到这个答案设置:
SharpSSH .NET Library:无法从.NET连接到Linux(Debian)

create_file.php:

 <?php $handle = fopen( 'test.txt', 'w' ); fwrite( $handle, 'Test Contents' ); fclose( $handle ); 

delete_file.php:

 <?php if( file_exists( 'test.txt' ) ) unlink( 'test.txt' ); 

.NET代码:

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Tamir.SharpSsh; namespace Testing { public class Unix { public static void CreateFile() { SshExec ssh = new SshExec(Constants.LINUX_HOST, Constants.LINUX_USER, Constants.LINUX_PASSWORD); ssh.Connect(); String result = ssh.RunCommand("sudo php " + Constants.PHP_SCRIPTS_DIR + "create_file.php"); } public static void DeleteFile() { SshExec ssh = new SshExec(Constants.LINUX_HOST, Constants.LINUX_USER, Constants.LINUX_PASSWORD); ssh.Connect(); String result = ssh.RunCommand("sudo php " + Constants.PHP_SCRIPTS_DIR + "delete_file.php"); } } } 

Solutions Collecting From Web of "Linux命令在使用SharpSSH库时不能从.NET执行"

我认为这些玩具的PHP文件是一个更大的东西减少的情况。

如果您需要实际创建和删除文件,请不要使用php – 您可以直接使用shell命令。

如果您不想关闭密码提示,那么在/etc/sudoers文件中有相应的语法 – 请参阅这里的 “NOPASSWD”。

PHP 应该以root身份运行,特别是在命令行中的变量。 如果你有权限问题 – 解决它们! PHP应该以最小特权的用户身份运行。

如果你需要一个“维护”帐户来ssh并不想让php用户有额外的能力,让它另一个用户与php用户共享一个组 – 您可以使用组权限。 (您可能需要摆弄文件创建的默认权限。)