一、Python針對shell獲取傳入,輸出參數html
傳入:"$num"python
例如: $0表示文件名,$1表示shell獲取的第一個參數mysql
輸出:經過打印shell結果的方式,輸出參數給Python。sql
例如: echo "{$iplist}",Python調用執行shell的方法便可獲取結果。shell
二、獲取切換用戶後加載shell環境執行Python命令的結果。數據庫
好比我登陸號是root權限,如今加載的shell環境須要ossadm權限執行,而後進入Python進行解密操做則可使用EOF命令:json
例如:orm
#! /bin/shhtm
su ossadm <<EOFblog
. /bin/test.sh
python
import json
from util import ossext
password = "$1"
result = ossext.Cipher.decrypt(password)
print result
EOF
三、shell的歸shell,Python的歸Python。
Python調用shell命令以前須要加載認證信息,變量信息等。能夠直接在shell文件或命令頭部設置。
例如:
#! /bin/sh
export var;
alias variable;
variable $1
四、Python鏈接數據庫執行命令:
要求:不能使用第三方庫,只能經過shell方式執行。(mysql -uuser -ppassword)
a.執行一條SQL命令,對返回值進行操做。我經過subprocess.Popen()獲得返回值。
b.鏈接數據庫打開SQL環境,正常執行多條命令。我經過os.system()得到數據庫環境。
參考:
五、在shell腳本中指定角色加載環境變量,執行Python命令
import subprocess
decrypt_cmd = '''su - ossadm -c "source /opt/ossadm/manager/bin/engr_profile.sh; {Python_path} -c \\" from util import ossext; plainText= ossext.Cipher.decrypt('{encrypted Text}') ; print (plainText) \\" '''.format(Python_path= Python_path, encryptedText = data)
process = subprocess.Popen(decrypt_cmd, stdout=subprocess.PIPE, shell= True)
result= process.stdout.read()
return result