欢迎来到小居数码网-一家分享数码知识,生活小常识的网站,希望可以帮助到您。

当前位置:生活小常识 > 数码知识 >
优质

shell调用python(shell调用python函数参数返回)

数码知识

周小童优秀作者

原创内容 来源:小居数码网 时间:2024-08-15 20:13:01 阅读() 收藏:47 分享:66

导读:您正在阅读的是关于【数码知识】的问题,本文由科普作家协会,生活小能手,著名生活达人等整理监督编写。本文有723个文字,大小约为3KB,预计阅读时间2分钟。

Shell脚本调用Python函数,本例子是通过Shell调用Python脚本,检查服务器上的某端口是否开启,编写的Python脚本port.py,脚本内容:

shell调用python函数参数返回

#!/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

以上为编写运维脚本的朋友提供帮助

上面就是小居数码小编今天给大家介绍的关于(shell调用python函数参数返回)的全部内容,希望可以帮助到你,想了解更多关于数码知识的问题,欢迎关注我们,并收藏,转发,分享。

94%的朋友还想知道的:

(328)个朋友认为回复得到帮助。

部分文章信息来源于以及网友投稿,转载请说明出处。

本文标题:shell调用python(shell调用python函数参数返回):http://sjzlt.cn/shuma/156004.html

猜你喜欢