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