我正试图从我的Raspberry Pi中获取mac地址,将mac的最后6个字符与一个固定字符串一起用作主机名。
到目前为止,我设法从其他来源得到的东西,但我现在完全被困在试图修剪绳子。
#!/bin/sh -e
MAC="$( sed "s/^.*macaddr=\([0-9A-F:]*\) .*$/\1/;s/://g" /proc/cmdline )"
MAC1="${MAC??????%}"
echo "$MAC1"
Pi使用的shell似乎是Dash,所以通常在没有时间内执行的BASH命令不想工作,或者在脚本中运行时似乎会产生错误。
下面是我在rc.local中使用的完整脚本。
任何关于如何做到这一点的建议都会受到极大的欢迎。
MAC="pi""$( sed "s/^.*macaddr=\([0-9A-F:]*\) .*$/\1/;s/://g" /proc/cmdline )"
echo "$MAC" > "/etc/hostname"
CURRENT_HOSTNAME=$(cat /proc/sys/kernel/hostname)
sed -i "s/127.0.1.1.*$CURRENT_HOSTNAME/127.0.1.1\t$MAC/g" /etc/hosts
hostname $MAC
发布于 2016-11-30 14:27:06
如果Pi上有cut
命令,您可以这样做
MAC1=$( echo $MAC | cut -c 7-12 )
发布于 2016-11-30 14:25:14
既然您已经在使用sed处理字符串,我建议添加另一个命令:
MAC=$(sed -e 's/^.*macaddr=\([0-9A-F:]*\) .*$/\1/' \
-e 's/://g' \
-e 's/.*\(.\{6\}\)/\1/' /proc/cmdline)
额外的sed命令从每一行中提取最后6个字符(我假设您只有一个?)。如果您愿意,可以将命令组合成单个字符串,不过我发现这种方法更易读。
https://stackoverflow.com/questions/40890690
复制相似问题