linux调用python函数,python脚本里执行linux命令的时候如何调用python的函数?
本菜鸟有一个可以获取ip地址的脚本,如下:
def get_local_ip(ifname = 'eth1'):
import socket, fcntl, struct
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
inet = fcntl.ioctl(s.fileno(), 0x8915, struct.pack('256s', ifname[:15]))
ret = socket.inet_ntoa(inet[20:24])
return ret
print get_local_ip()
现在有一个任务,就是在linux里把一个relay.conf文件里的“RELAY_AGENT_IP = ”替换成“RELAY_AGENT_IP = 当前IP地址”,这个用sed语句很好解决:os.system(“sed -i s/RELAY_AGENT_IP =/RELAY_AGENT_IP = 当前IP地址/ relay.conf”)即可,但是get_local_ip()是一个函数啊,函数无法直接套用到上面那个sed语句,会报语法错误。
请问遇到这样的情况怎么破?肯定各位大大指点。
上面的回答就可以,使用string模板就可以了,或者这样子的表达方式更友好:
os.system("sed -i s/RELAY_AGENT_IP =/RELAY_AGENT_IP = {}/ relay.conf".format(get_local_ip()))
os.system("sed -i s/RELAY_AGENT_IP =/RELAY_AGENT_IP = %s/ relay.conf"%(get_local_ip()))
首先你这个
get_local_ip
函数有问题, 并不能正常获取到本地
IP
地址, 建议看下这里的解决方法:
http://stackoverflow.com/ques…
还有你这个
sed
用的也不对啊, 语法有问题(缺了双引号), 应该是这样
sed -i "s/RELAY_AGENT_IP =/RELAY_AGENT_IP = 当前IP地址/" relay.conf
而且这条命令只能是把
RELAY_AGENT_IP =
这个替换成
RELAY_AGENT_IP = 当前IP地址
而已, 如果你的
relay.conf
文件这一行原本就有IP地址值呢?比如这样
RELAY_AGENT_IP = 1.2.3.4
照你这个命令替换完是这个样子
RELAY_AGENT_IP = 当前IP地址1.2.3.4
, 为了有一定的错误格式容忍度, 最好用正则来匹配, 比如
sed -i "s/^RELAY_AGENT_IP.*/RELAY_AGENT_IP = 我爱北京天安门/" relay.conf
$ cat relay.conf
RELAY_AGENT_IP = 我爱北京天安门
$ sed "s/^RELAY_AGENT_IP.*/RELAY_AGENT_IP = 天安门上太阳升/" relay.conf
RELAY_AGENT_IP = 天安门上太阳升
linux调用python函数,python脚本里执行linux命令的时候如何调用python的函数?相关推荐
- python 调用mysql_Python中直接在MySQL执行SQL命令
因为懒,所以不想用SQLyog,用Python写了一个快速执行SQL命令的程序:import pymysql,sys class dealMySQL(object): 'PyMysql' versio ...
- 脚本批量执行Redis命令
脚本批量执行Redis命令 1.cat命令执行 2.shell脚本执行命令 1.cat命令执行 将要执行的redis脚本写入到txt文件中 执行 cat batch-redis.txt | ./red ...
- python脚本里执行jar包_python脚本简化jar操作命令
本篇和大家分享的是使用python简化对jar包操作命令,封装成简短关键字或词,达到操作简便的目的.最近在回顾和构思shell脚本工具,后面一些文章应该会分享shell内容,希望大家继续关注. 获取磁 ...
- python 执行shell命令行效率提升_在python脚本中执行shell命令的方法
使用Python处理一个shell命令或一个执行一个shell脚本,一般情况下,有以下三种方法,以下我们来看: 第一种方法是使用os.system的方法 os.system(" cmd&qu ...
- python调用scp上传目录_python执行scp命令拷贝文件及文件夹到远程主机的目录方法...
系统环境centos7 python2.7 先在操作系统安装expect [root@V71 python]# vi 3s.py #!/usr/bin/python #coding:utf-8 imp ...
- python:通过python脚本快速执行 bash 命令
* git镇楼:git config --global core.filemode false* 实践出真知.虽然这个脚本代码量不大,但是也是经过3次修改才达到预期效果的. * 第一次写的时候,凭逻辑 ...
- linux任务计划单独脚本能执行,linux中计划任务执行脚本
我使用的是ubuntu14.4,所以在ubuntu中一切正常,在其他linux系统中应该都差不多. 1 计划任务,crontab命令选项: -u指定一个用户, -l列出某个用户的任务计划, -r删除某 ...
- python appium自动化测试脚本能怎么用_Appium自动化测试系列2- 写一个Python测试脚本来测试一下YY语音...
我们在<Appium自动化测试系列1-Appium环境的安装和配置>里已经搭好了Appium的基本环境,这一章,我们就来真刀真枪使用一下Appium, 看看Appium是如果来实现自动化测 ...
- python 通过paramiko模块批量执行ssh命令
多台设备批量执行ssh命令,目前是串行,后期会加入多线程实现并行,直接上源码 注意不能执行top等动态命令 #!/usr/bin/env python # -*- coding:utf-8 -*-__ ...
最新文章
- 实验四 [bx]和loop的使用+段前缀
- 云信小课堂丨视频“双录”知多少?
- 最牛营业部——国信泰然九路揭秘
- 宋利:编码既是技术也是艺术
- dynamodb容器使用_使用DynamoDBMapper扫描DynamoDB项目
- 机器视觉技术及应用_工业机器人视觉技术的应用前景
- Win7系统虚拟键盘打开的方法
- CVE-2019-15107 Webmin远程命令执行漏洞复现
- Cannot find executable for CFBundle 解决办法
- 在Linux上安装MySql
- 另一个flutter-go
- [转载] python的变量和C++的变量有什么区别
- 1分钟教会你怎么PDF转图片,告别手动截图
- android 新浪微博客户端的表情功能的实现,flutter教程pdf
- Windows运维之道——PXE网克系统
- Miller_Rabin(米勒拉宾)素数测试
- 真正厉害的人,早戒掉了情绪
- 【C++学习笔记】函数返回和函数重载
- 苹果新贵 Swift 之前世今生
- envi反演水质参数_遥感干旱反演方法汇总