本菜鸟有一个可以获取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的函数?相关推荐

  1. python 调用mysql_Python中直接在MySQL执行SQL命令

    因为懒,所以不想用SQLyog,用Python写了一个快速执行SQL命令的程序:import pymysql,sys class dealMySQL(object): 'PyMysql' versio ...

  2. 脚本批量执行Redis命令

    脚本批量执行Redis命令 1.cat命令执行 2.shell脚本执行命令 1.cat命令执行 将要执行的redis脚本写入到txt文件中 执行 cat batch-redis.txt | ./red ...

  3. python脚本里执行jar包_python脚本简化jar操作命令

    本篇和大家分享的是使用python简化对jar包操作命令,封装成简短关键字或词,达到操作简便的目的.最近在回顾和构思shell脚本工具,后面一些文章应该会分享shell内容,希望大家继续关注. 获取磁 ...

  4. python 执行shell命令行效率提升_在python脚本中执行shell命令的方法

    使用Python处理一个shell命令或一个执行一个shell脚本,一般情况下,有以下三种方法,以下我们来看: 第一种方法是使用os.system的方法 os.system(" cmd&qu ...

  5. python调用scp上传目录_python执行scp命令拷贝文件及文件夹到远程主机的目录方法...

    系统环境centos7 python2.7 先在操作系统安装expect [root@V71 python]# vi 3s.py #!/usr/bin/python #coding:utf-8 imp ...

  6. python:通过python脚本快速执行 bash 命令

    * git镇楼:git config --global core.filemode false* 实践出真知.虽然这个脚本代码量不大,但是也是经过3次修改才达到预期效果的. * 第一次写的时候,凭逻辑 ...

  7. linux任务计划单独脚本能执行,linux中计划任务执行脚本

    我使用的是ubuntu14.4,所以在ubuntu中一切正常,在其他linux系统中应该都差不多. 1 计划任务,crontab命令选项: -u指定一个用户, -l列出某个用户的任务计划, -r删除某 ...

  8. python appium自动化测试脚本能怎么用_Appium自动化测试系列2- 写一个Python测试脚本来测试一下YY语音...

    我们在<Appium自动化测试系列1-Appium环境的安装和配置>里已经搭好了Appium的基本环境,这一章,我们就来真刀真枪使用一下Appium, 看看Appium是如果来实现自动化测 ...

  9. python 通过paramiko模块批量执行ssh命令

    多台设备批量执行ssh命令,目前是串行,后期会加入多线程实现并行,直接上源码 注意不能执行top等动态命令 #!/usr/bin/env python # -*- coding:utf-8 -*-__ ...

最新文章

  1. 实验四 [bx]和loop的使用+段前缀
  2. 云信小课堂丨视频“双录”知多少?
  3. 最牛营业部——国信泰然九路揭秘
  4. 宋利:编码既是技术也是艺术
  5. dynamodb容器使用_使用DynamoDBMapper扫描DynamoDB项目
  6. 机器视觉技术及应用_工业机器人视觉技术的应用前景
  7. Win7系统虚拟键盘打开的方法
  8. CVE-2019-15107 Webmin远程命令执行漏洞复现
  9. Cannot find executable for CFBundle 解决办法
  10. 在Linux上安装MySql
  11. 另一个flutter-go
  12. [转载] python的变量和C++的变量有什么区别
  13. 1分钟教会你怎么PDF转图片,告别手动截图
  14. android 新浪微博客户端的表情功能的实现,flutter教程pdf
  15. Windows运维之道——PXE网克系统
  16. Miller_Rabin(米勒拉宾)素数测试
  17. 真正厉害的人,早戒掉了情绪
  18. 【C++学习笔记】函数返回和函数重载
  19. 苹果新贵 Swift 之前世今生
  20. envi反演水质参数_遥感干旱反演方法汇总

热门文章

  1. C++类与const关键字
  2. C++ 之类的静态成员
  3. java 环境配置 maven 环境配置
  4. 深度解析(十五)哈夫曼树
  5. 学习 git clone 几种不同的协议
  6. 分离Exchange的OWA和Microsoft-Server-Activesync手机访问
  7. CNN收购Beme视频分享APP 11个员工也将加入
  8. UIAppearanceContainer 利器
  9. 域名解析的记录类型区别
  10. 集合详解(三)----Map的两种遍历方式