求助大神,如何通过网页使用python向linux系统发送一些命令执行

如题所述

第1个回答  2017-07-17
(1) os.system
仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息

复制代码代码如下:

system(command) -> exit_status
Execute the command (a string) in a subshell.

如果再命令行下执行,结果直接打印出来

复制代码代码如下:

>>> os.system('ls')
04101419778.CHM bash document media py-django video
11.wmv books downloads Pictures python
all-20061022 Desktop Examples project tools

(2) os.popen
该方法不但执行命令还返回执行后的信息对象

复制代码代码如下:

popen(command [, mode='r' [, bufsize]]) -> pipe
Open a pipe to/from a command returning a file object.

例如:

复制代码代码如下:

>>>tmp = os.popen('ls *.py').readlines()
>>>tmp
Out[21]:
['dump_db_pickle.py ',
'dump_db_pickle_recs.py ',
'dump_db_shelve.py ',
'initdata.py ',
'__init__.py ',
'make_db_pickle.py ',
'make_db_pickle_recs.py ',
'make_db_shelve.py ',
'peopleinteract_query.py ',
'reader.py ',
'testargv.py ',
'teststreams.py ',
'update_db_pickle.py ',
'writer.py ']

好处在于:将返回的结果赋于一变量,便于程序的处理。

(3) 使用模块 subprocess

复制代码代码如下:

>>> import subprocess
>>> subprocess.call(["cmd", "arg1", "arg2"],shell=True)

获取返回和输出:

复制代码代码如下:

import subprocess
p = subprocess.Popen('ls', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in p.stdout.readlines():
print line,
retval = p.wait()

(4) 使用模块 commands

复制代码代码如下:

>>> import commands
>>> dir(commands)
['__all__', '__builtins__', '__doc__', '__file__', '__name__', 'getoutput', 'getstatus','getstatusoutput', 'mk2arg', 'mkarg']
>>> commands.getoutput("date")
'Wed Jun 10 19:39:57 CST 2009'
>>>
>>> commands.getstatusoutput("date")
(0, 'Wed Jun 10 19:40:41 CST 2009')

注意: 当执行命令的参数或者返回中包含了中文文字,那么建议使用subprocess,如果使用os.popen则会出现下面的错误:

复制代码代码如下:

Traceback (most recent call last):
File "./test1.py", line 56, inmain()
File "./test1.py", line 45, in main
fax.sendFax()
File "./mailfax/Fax.py", line 13, in sendFax
os.popen(cmd)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 46-52: ordinal not inrange(128)本回答被提问者采纳

python怎么实现web页面敲入linux命令,传入到另一个服务器执行
http client -> web容器 -> subprosess +ssh 或 telnet ->获取stdout stderr -》web容器->http client 或者使用paramiko import paramiko client = paramiko.SSHClient()client.set_missing_host_key_policy(paramiko.AutoAddPolicy())client.load_system_host_keys()client.connect(SERVER_HOSTNAME, ...

python怎么实现web页面敲入linux命令,传入到另一个服务器执行呢?
javascript传递字符串,python框架接受,用os.system或者commands.getoutput执行之。。。话说这是多么的危险啊 或者你是指webshell

python 执行linux命令?
1.执行一个简单的命令,例如 ls 命令,可以使用 subprocess.run() 方法:import subprocess result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE)print(result.stdout.decode())2.执行一个需要输入的命令,例如 sudo 命令,可以使用 subprocess.Popen() 方法:import subprocesssudo_passwor...

python3终端交互执行Linux命令
实现Python终端交互执行Linux命令,结合Python库paramiko,完成远程Linux主机操作。初始化Linux类,输入IP、用户名、密码与超时时间,调用connect方法建立连接,返回成功连接信息与接收数据。若连接失败,重试三次后退出程序。连接成功后,利用send方法执行命令,接收并返回命令执行结果,循环获取大命令执行过程中的...

python调用linux命令
使用os模块的system方法调出linux命令:In [1]: import os #导入os模块 In [2]: os.system('ls')anaconda-ks.cfg epel-release-7-5.noarch.rpm ipython-4.1.2 ipython-4.1.2.tar.gz pip-8.1.2 pip-8.1.2.tar.gz#md5=87083c0b9867963b29f7aba3613e8f4a.gz Out[2]: 0 In [3...

我想用python写个web界面简单执行远程linux命令 web界面要能自由填写执...
首先python基础你得会:最简单套路:web用flask,linux交互用subprocessor模块 说白了就三点:python基础、flask框架、subprocessor模块

如何远程向Linux输入控制台命令?
"标准的Linux系统命令"和"某个程序自己的命令"之间并没有严格的界限,你把自己的程序编译好以后放到 PATH 路径上就可以了。比如,你把你自己的编译好了的程序放到 \/usr\/bin 内,使用起来与 “标准的Linux系统命令” 就没什么区别了。

Linux系统如何运行Python脚本linux执行python脚本
最后,你需要在终端中运行Python脚本。运行Python脚本只需要一行命令: python 文件名.py。比如:python \/usr\/bin\/script.py 。如果你想把Python脚本编译成可执行文件,可以使用Python byterun或其他相关工具,以此使得你的Python脚本更高效、安全。总结:跟Linux系统一样,Python脚本也是一种功能强大的编程...

远程连接linux服务器跑python程序
一、远程连接服务器 学校服务器为Linux系统,可通过虚拟机进行连接。在虚拟机中打开终端,输入命令 ssh 用户名@IP,接着根据提示输入密码。若遇到连接被拒绝,可能为网络问题。二、下载及上传文件 直接在虚拟机终端中执行命令进行文件下载与上传,无需连接远程服务器。下载文件时,使用命令 scp username@ip...

如何从windows系统往linux系统中传文件?
要从Windows系统向Linux系统传输文件,首先推荐安装一个工具,它允许Windows机器与远程Linux机器通过XShell进行文件传输。安装完成之后,可以利用拖拽方式轻松上传文件。对于习惯于命令行操作的用户,还有其他方法。一种方法是直接使用拖拽功能。另一种方法则涉及到终端命令。具体操作为:在Linux终端中输入"rz"...

相似回答
大家正在搜