我试图在Linux中通过.NET使用SharpSsh .NET库运行一个非常简单的命令。该代码不会抛出任何异常,并且仍然不起作用。当我从终端运行sudo php /www/data/{directory}/scripts/create_file.php
命令时,它会创建该文件。当我从终端运行sudo php /www/data/{directory}/scripts/delete_file.php
命令时,它将删除该文件。从.NET调用此代码时,我看不到正在创建/删除的文件。Linux命令在使用SharpSSH库时无法通过.NET执行工作
看到这个答案的设置:
SharpSSH .NET Library: unable to connect to Linux (Debian) from .NET
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");
}
}
}
结果字符串中出现了什么? – Broam 2012-03-12 18:32:02
这是一个空字符串===>“” – MacGyver 2012-03-12 18:32:50
sudo是否需要此操作的密码?如果不是,它是否第一次需要它?如果是这样,机器正在缓存身份验证凭证。 为什么你需要以root身份运行php?这应该作为拥有该文件的用户运行。 – Broam 2012-03-12 18:34:58