windows上的PHP或Python向远程Linux发送命令

2024-06-16 11:43:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个web应用程序,将G代码发送到3D打印机。这台打印机有一个Linux堆栈。我可以在Win上的Ubuntu应用程序中使用以下命令

ssh root@ip password python3 /usr/share/griffin/command_util.py sendgcode G28

键入python3 /usr/share/griffin/command_util.py之后, 它将返回(Cmd) type command here

我尝试在PHP中使用ssh2,连接和身份验证部分工作正常。此外,listcd \usr\share\griffin && list还返回与我在windows cmd中得到的结果相同的结果。但是在下面的代码中,在linux堆栈中运行py文件之后,它只返回(Cmd)sendgcode G28什么也没发生。你知道吗

<?php
set_include_path('C:/xampp/htdocs/phpseclib1.0.15');
include('Net/SSH2.php');

$ssh = new Net_SSH2('ip');
if (!$ssh->login('root', 'password')) {
    exit('Login Failed');
}

echo $ssh->exec('python3 /usr/share/griffin/command_util.py && sendgcode G28');
?>

Python中的以下代码不会收到任何retun值

# 
import paramiko
# realize transport
trans = paramiko.Transport(('ip', 22))
# connection
trans.connect(username='root', password='ultimaker')

# Specify the transport of the sshclient object as the above trans
ssh = paramiko.SSHClient()
ssh._transport = trans
# execute command
stdin, stdout, stderr = ssh.exec_command('python3 /usr/share/griffin/command_util.py \n sendgcode G28')
print(stdout.read().decode())

# close connection
trans.close()

Linux堆栈显示sendgcode命令没有文档记录。我不明白为什么我可以在Windows cmd中使用它,但不能在PHP或Python中使用它。任何帮助都将不胜感激!你知道吗


Tags: 代码pyipsharetrans堆栈usrutil