使用python获取动态分配的ip地址并传给shell

Linux下的很多软件要从环境变量里获取配置信息,有些环境变量好设置(比如某个目录),有些难设置,比如获取本机动态ip地址

我采用的方法是

运行ifconfig eth0命令获取本机网卡eth0的配置信息

将输出的内容保存到临时文件

逐行读取该文件,读到第2行时,对改行进行字段抽取

将抽取出的字符串打印到标准输出

shell的双反斜杠能将python脚本的标准输出作为标准输入保存到环境变量


先在HOME目录下创建get_ip.py

#encoding=utf-8
import subprocess
tmp_file = open('/tmp/g.log','w')
subprocess.call(['ifconfig', 'eth0'], stdout=tmp_file)

tmp_file = open('/tmp/g.log','r')
line_num = 0
for line in tmp_file:
    if line_num == 1:
        print line.lstrip().split('  ')[0].split(':')[1]
    line_num = line_num +1


然后在shell脚本里添加export环境变量 语句

export ROS_IP=`python $HOME/get_ip.py`

完毕!


要批量获取网络摄像机的IP地址和设备名称,你可以使用一些网络工具和脚本来实现。以下是一个基本的思路: 1. 确定你要扫描的网络范围:你可以确定你要扫描的IP地址范围,例如192.168.1.0/24,这将扫描192.168.1.0到192.168.1.255之间的所有IP地址。 2. 使用网络扫描工具:你可以使用诸如nmap、fping或arp-scan等工具来扫描指定的IP地址范围。这些工具可以帮助你发现活动的设备并获取IP地址。 3. 解析设备信息:一旦你获得了设备的IP地址,你可以使用脚本编程语言(如Python、Bash等)编写脚本来解析设备信息。你可以使用网络库(如socket)来连接到设备并获取设备的名称或其他相关信息。 以下是一个简单的Bash脚本示例,使用nmap扫描网络并获取设备的IP地址和名称: ```bash #!/bin/bash network="192.168.1.0/24" # 使用nmap扫描网络 nmap -sn $network | grep "Nmap scan report" | awk '{print $NF}' > ip_addresses.txt # 遍历IP地址获取设备名称 while read -r ip; do device_name=$(nslookup $ip | grep "name =" | awk '{print $NF}' | sed 's/\.$//') echo "IP: $ip, Device Name: $device_name" done < ip_addresses.txt # 清除临时文件 rm ip_addresses.txt ``` 请注意,这只是一个简单的示例,你可能需要根据你的实际情况进行适当的调整和改进。此外,需要确保你有足够的权限来运行网络扫描工具和访问设备信息。 希望这个示例对你有所帮助!如果你需要更进一步的指导,请告诉我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值