Я пытаюсь получить адрес mac из моей малины Pi, беря последние 6 символов mac для использования в качестве имени хоста наряду с фиксированной строкой.Сценарий оболочки Linux - обрезка строки для тире
вот что мне удалось получить из других источников до сих пор, но теперь я полностью застреваю, пытаясь обрезать строку.
#!/bin/sh -e
MAC="$(sed "s/^.*macaddr=\([0-9A-F:]*\) .*$/\1/;s/://g" /proc/cmdline)"
MAC1="${MAC??????%}"
echo "$MAC1"
оболочка используется Пи, кажется, тир, так что обычные команды 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
вы можете предоставить некоторый образец вашей '/ Proc/cmdline' выход, а также ваш желаемый результат, основанный на том, что? – fedorqui
@fedorqui dma.dmachans = 0x7f35 bcm2708_fb.fbwidth = 1920 bcm2708_fb.fbheight = 1080 bcm2709.boardrev = 0xa02082 bcm2709.serial = 0x85f8e90b smsc95xx.macaddr = B8: 27: EB: F8: E9: 0B bcm2708_fb.fbswap = 1 bcm2709. uart_clock = 48000000 sdhci-bcm2708.emmc_clock_freq = 250000000 vc_mem.mem_base = 0x3dc00000 vc_mem.mem_size = 0x3f000000 dwc_otg.lpm_enable = 0 console = serial0,115200 console = tty1 root =/dev/mmcblk0p2 rootfstype = ext4 elev = deadline fsck.repair = yes rootwait – Kristiaan
Пожалуйста, отредактируйте свой вопрос, а не используйте комментарии для добавления деталей. –