python脚本里执行linux命令的时候如何调用python的函数?

查看:318
本文介绍了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()))

这篇关于python脚本里执行linux命令的时候如何调用python的函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆