1、Python针对shell获取传入,输出参数
传入:"$num"
例如: $0表示文件名,$1表示shell获取的第一个参数
输出:通过打印shell结果的方式,输出参数给Python。
例如: echo "{$iplist}",Python调用执行shell的方法即可获取结果。
2、获取切换用户后加载shell环境执行Python命令的结果。
比如我登录号是root权限,现在加载的shell环境需要ossadm权限执行,然后进入Python进行解密操作则可以使用EOF命令:
例如:
#! /bin/sh
su ossadm <<EOF
. /bin/test.sh
python
import json
from util import ossext
password = "$1"
result = ossext.Cipher.decrypt(password)
print result
EOF
3、shell的归shell,Python的归Python。
Python调用shell命令之前需要加载认证信息,变量信息等。可以直接在shell文件或命令头部设置。
例如:
#! /bin/sh
export var;
alias variable;
variable $1
4、Python连接数据库执行命令:
要求:不能使用第三方库,只能通过shell方式执行。(mysql -uuser -ppassword)
a.执行一条SQL命令,对返回值进行操作。我通过subprocess.Popen()得到返回值。
b.连接数据库打开SQL环境,正常执行多条命令。我通过os.system()获得数据库环境。
参考:
5、在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