gpt4 book ai didi

php - 使用 SharpSSH 库时,Linux 命令在 .NET 执行中不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 04:25:11 30 4
gpt4 key购买 nike

我正在尝试使用 SharpSsh .NET 库通过 .NET 在 Linux 中运行一个非常简单的命令。该代码没有抛出任何异常,并且仍然无法正常工作。当我从终端运行 sudo php/www/data/{directory}/scripts/create_file.php 命令时,它会创建文件。当我从终端运行 sudo php/www/data/{directory}/scripts/delete_file.php 命令时,它会删除该文件。从 .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");
}
}
}

最佳答案

我假设这些玩具 php 文件是较大文件的简化版。

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

如果您想关闭密码提示,/etc/sudoers 文件中有相关语法 - 请参阅“NOPASSWD”here .

PHP 不应该以 root 身份运行,尤其是在命令行中使用这样的变量。如果您遇到权限问题 - 解决它们! PHP 应以具有最低权限的用户身份运行。

如果您需要一个“维护”帐户来 ssh 登录,并且不想让 php 用户拥有额外的功能,请使其成为与 php 用户共享组的另一个用户 - 并且您可以使用组权限。 (您可能需要调整文件创建的默认权限。)

关于php - 使用 SharpSSH 库时,Linux 命令在 .NET 执行中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9672698/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com