前言:
目前咱们对“python如何调用其他py里的函数”大约比较关切,各位老铁们都想要了解一些“python如何调用其他py里的函数”的相关文章。那么小编同时在网摘上收集了一些有关“python如何调用其他py里的函数””的相关知识,希望我们能喜欢,看官们快快来了解一下吧!Shell脚本调用Python函数,本例子是通过Shell调用Python脚本,检查服务器上的某端口是否开启,编写的Python脚本port.py,脚本内容:
#!/usr/bin/python# port.py import socket def scan(port): s = socket.socket() s.settimeout(0.1) if s.connect_ex(('localhost', port)) == 0: return 'port: ' + str(port) + ' open' else: return 'port: ' + str(port) + ' not open' s.close() if __name__ == '__main__': scan()
在Shell脚本中,这样编写命令
cd /home/appuser checkresult=`python -c 'import port; print port.scan(80)'` echo $checkresult
语句解释:首先cd到要执行的Python脚本目录,然后使用 python -c 'import port; print port.scan(80)' 调用port模块中的scan函数,检查80端口是否正在使用。-c选项是告诉Python来执行一些Python命令
echo输出结果
port: 80 open
如果传入一个不是正在使用的端口号801
checkresult=`python -c 'import port; print port.scan(801)'`
echo输出结果
port: 801 not open
另外,`python -c 'import port; print port.scan(80)'` 也可以写成 $(python -c 'import port; print port.scan(80)')
实际使用中的一个例子,Shell脚本调用一个Python方法,通过socket检查远端的IP和端口是否可连通
Python脚本pysocket.py:
#!/usr/bin/python import socket def scan(ip,port): s = socket.socket() s.settimeout(2) if s.connect_ex((str(ip), port)) == 0: return 0 else: return 1 s.close() if __name__ == '__main__': scan()
pysocket.py中的scan方法里,如果通过socket能连接上ip和端口的服务,则返回0值,否则返回1
Shell脚本
max_check=5
#检查服务是否启动
function check() {
#先进入到pysocket.py所在目录
cd /opt/data/py i=1 while [ $i -le $max_check ] do echo "$i th check: " $1 " " $2 reval=$(python -c 'import pysocket; print pysocket.scan("'$1'",'$2')') echo "check result: "$reval if [ $reval -eq 0 ]; then echo "check success" return 0 else echo "next check after 30 seconds" sleep 30 fi let i++ done return 1}
Shell中的check函数中,通过 $(python -c 'import pysocket; print pysocket.scan("'$1'",'$2')') 调用pysocket.py 的scan方法并传参数,如果连接不通,每次检查后等待30秒,最多检查5次。
Shell调用check函数
check 10.7.128.186 26666
以上为编写运维脚本的朋友提供帮助
标签: #python如何调用其他py里的函数