shell腳本與Python的交互

一、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()得到數據庫環境。

參考: 

Python調用shell命令

subprocess的API手冊

 

五、在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

相關文章
相關標籤/搜索