1. 我想用python写个web界面简单执行远程linux命令 web界面要能自由填写执行shell命令和脚本
首先python基础你得会:
最简单套路:web用flask,linux交互用subprocessor模块
说白了就三点:python基础、flask框架、subprocessor模块
2. Python脚本在Linux上怎么运行
一、首先下载安装python,建议安装2.7版本以上,3.0版本以下,由于3.0版本以上不向下兼容,体验较差。
3. Python脚本在Linux上怎么运行
一种方式是用Python命令加Python脚本文件名来运行,如果是运行Python 2.x的Python脚本,可以用python命令(字母P小写)执行:python 文件名;如果是运行Python 3.x的Python脚本,就用python3命令行执行:python3 文件名。
还有一个直接输入脚本文件名来运行Python脚本的方式,不过这个Python脚本必须具有可执行权限(Linux系统中有执行权限的文件才可以执行,即便是一个二进制文件没有可执行权限也是不能运行的),给一个文件添加可执行权限的命令是:chmod a+x 文件路径。注意一点:输入的脚本文件名如果不是一个绝对路径的文件名,就要先用cd命令切换到脚本所在文件夹,然后以./文件名的方式运行(文件名前面加的是一个英文点号和一个英文斜杠,表示在当前目录下运行文件),./必须加上。
4. 如何使用Python3.4与Linux shell交互
下面来看下在python3.4中,如何与Linux交互的。
在python里面可以操作linux的命令有
1,os.system("cmd")
2,os.open("cmd")
3,spawn*
4,subprocess
在最新的python里,推荐使用subprocess来与shell通信,它会生成一个子进程来连接输出,输入,错误等shell下3中标准的输入输出流,并返回执行结果的状态码0和1,来判断本次执行命令的成功与失败。
下面来看一个小例子,首先,确保你的linux环境支持python3.4,如果不支持,你可以参考散仙的上篇文章来安装python3.4
首先,在linux,执行python命令找到最新的python3.4的路径,然后再py文件里声明头部路径,如果不知道python的具体安装路径,可以使用which python来查找路径
[root@master ~]# py
pydoc pydoc3.4 python2 python3 python3.4-config python3.4m-config pyvenv
pydoc3 python python2.6 python3.4 python3.4m python3-config pyvenv-3.4
[root@master ~]# which python3.4
/usr/local/python3.4/bin/python3.4
[root@master ~]#
写完脚本之后,先给脚本赋值权限,再执行:
[root@master rtt]# chmod +x b.py
[root@master rtt]# cat b.py
#!/usr/local/python3.4/bin/python3.4
import subprocess as t
v=t.call("ls")
print ("返回值: ",v)
[root@master rtt]# b.py
a.py b.py b.txt
返回值: 0
[root@master rtt]#
看下面的例子,注意python的shell执行,返回的是一个字符串,如果我们想逐行解析,需要使用如下方法:
[root@master rtt]# cat b.txt
id name
1 a
2 战三
3 b
[root@master rtt]# cat a.py
#!/usr/local/python3.4/bin/python3.4
import os
import subprocess as t
#var=t.getoutput("df -h")
#v=t.call("ls")
#var=t.getoutput("cat b.txt | grep a ")
var=t.getoutput("df -h | cat -n ")
for line in var.split("\n"):
print("这一行:" +line)
#print(var)
[root@master rtt]# a.py
这一行: 1 Filesystem Size Used Avail Use% Mounted on
这一行: 2 /dev/sda2 9.7G 2.9G 6.3G 32% /
这一行: 3 tmpfs 495M 0 495M 0% /dev/shm
这一行: 4 /dev/sda1 194M 28M 157M 15% /boot
这一行: 5 /dev/sda3 9.9G 948M 8.5G 10% /home
[root@master rtt]#
最后看下python的两种,生成行号的方式:
tt="你好\n哈喽"
for i,it in enumerate(tt.split("\n")):
print(i,it)
for line in range(len(tt.split("\n"))):
print(line," ",tt.split("\n")[line])
输出结果如下:
0 你好
1 哈喽
0 你好
1 哈喽
5. python 执行linux命令后怎样输入密码
一、使用工具:python、linux
二、方法步骤:有三种方法
1、 最简单的方法,但是不安全
raw_input() :
pwd = raw_input('password: ')
print pwd
# password: aaa
# aaa
2、很安全,但是看不到输入的位数,会让人觉得有点不习惯,不知道的还以为没有在输入
getpass.getpass() :
import getpass
pwd = getpass.getpass('password: ')
print pwd
# password:
# aaaa
3、
msvcrt.getch() :
代码如下:
import msvcrt, sys
def pwd_input():
chars = []
while True:
newChar = msvcrt.getch()
if newChar in '\r\n':
# 如果是换行,则输入结束
print ''
break
elif newChar == '\b':
# 如果是退格,则删除末尾一位
if chars:
del chars[-1]
sys.stdout.write('\b')
# 删除一个星号,但是不知道为什么不能执行...
else:
chars.append(newChar)
sys.stdout.write('*')
# 显示为星号
print ''.join(chars)
pwd = pwd_input()
print pwd
# ******
# aaaaaa
三、注意事项:第三种方法解决了第二种方法不能显示输入位数的问题,但是如果按退格键(backspace)的话,虽然实际的是退格了,
但控制台却没有显示相应的退格,比如,当前输入是:abcd,显示为:****,然后现在打一个退格键,实际
输入为:abc,而显示仍为:****。不知道为什么 sys.stdout.write('\b') 这行没有执行,估计是和使用msvcrt.getch()有关系。感兴趣的朋友可以进一步研究一下。
6. Linux:Python编写Linux自定义命令工具
摘要: Linux , Python
工作中需要频繁使用到一个字符串的md5,因此编写一个md5命令工具,输入字符串直接得到输出,并且命令支持参数设置,比如是否事先格式化,指定不同参数可以支持多功能输出,操作步骤如下
直接vim一个脚本,脚本名md5不需要.py后缀,这样更像一个命令,注意在脚本第一行引入python解释器,并设置utf-8编码
其中-f支持先格式化再得到md5,-l支持传入多个字符串用空格分开
赋予可执行权限
测试是否符合要求
直接放置到 /usr/local/bin 目录下(需要root权限)
也可以使用软连接的方式,推荐使用绝对路径
之后就可以在环境变量中直接使用到md5命令
shebang :中文翻译“释伴”,由 #! 开头的字符串,出现在文本文件的 第一行 。类UNIX操作系统的程序载入器会分析shebang后的内容,将这些内容作为解释命令,并调用该指令,并将载有 shebang的文件路径作为该解释器 的参数
比如 #!/bin/bash 就是使用/bin/bash作为解释器运行脚本,如果以Python作为解释器运行脚本先找到Python解释器的路径,一般在Linux自带的 /usr/bin/python 是Python2版本,也可以指定其他Python版本 #!/opt/anaconda3/bin/python ,第二行为 # coding=utf-8 用来指定编码格式,否则Python2输出中文乱码
对于自定义脚本,推荐放置在 /usr/local/bin 目录,有多个可执行文件目录在环境变量中,区别如下:
/bin : 包含二进制可执行文件,为系统最基本的命令,如ls等
/sbin : 与/bin 类似,不同之处是其为root权限命令文件
/usr/bin : 系统预装可执行文件,会随着系统升级而改变
/usr/sbin : 同上,不同之处是其为root权限运用
/usr/local/bin : 三级目录,用户自己的可执行文件,系统不管理
/usr/local/sbin : root权限用户程序
7. python执行linux命令,怎样自动输入 yes/no
这种交互猜棚销式命令可以使用pexpect模块实现
>>>importpexpect
>>>child=和散pexpect.spawn('ssh127.0.0.1')
>>>child.expect('continue')
0
>>>child.sendline('yes')
4
>>>printchild.before
Theauthenticityofhost'127.0.0.1(127.0.0.1)'can'tbeestablished.
ECDSAkeyfingerprintisd1:61:c6:ae:ab:bc:22:3e:52:57:49:d5:05:6f:4b:90.
Are穗游yousureyouwantto
传送门
http://990487026.blog.51cto.com/10133282/1715953