LINUX.ORG.RU

скрипт sh очень нужна помощь

 ,


0

3

Добрый день! Прошу помощи у спецов Linux Есть zabbix система, хочу что бы он собирал информацию о mac адресах на свитчах. Нашел замечательную статью https://habrahabr.ru/post/128439/#comment_4246004 Делаю все как описано но при выполнении скрипта ./mac.sh получаю ошибку: # ./mac.sh «000000000000» ./mac.sh: 81: ./mac.sh: Bad substitution Что не так???? не понимаю 81 -я это mac=${mac:0:8}

Пробовал через ":" -как только не пробовал, все никак....



Последнее исправление: leave (всего исправлений: 1)

mac=${mac:0:8}

Если mac — команда, то нужны круглые скобки. Если это переменная, то вообще не нужны.

sudopacman ★★★★★
()
Ответ на: комментарий от vel

Спасибо за отклик Пишет что ошибка в 81 строке, вот она mac=${mac:0:8}

root@zabbex:/home/scripts# sh -x ./mac.sh 000000 + [ -z 000000 ] + filename=/home/scripts/oui.txt + tmpfile=/tmp/oui.txt + link=http://standards.ieee.org/develop/regauth/oui/oui.txt + sed=/bin/sed + awk=/usr/bin/awk + mac=000000 + [ ! -f /home/scripts/oui.txt ] + [ 6 -lt 8 ] + /bin/sed s/^\(..\)\(..\)\(..\)/\1-\2-\3/ + echo 000000 + mac=00-00-00 ./mac.sh: 81: ./mac.sh: Bad substitution

testsia
() автор топика

А чего тут гадать. Ваш sh ущербен и не умеет ${mac:0:8}.

Какая операционная система-то?

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 1)
Ответ на: комментарий от testsia

GNU/Linux
GNU

В GNU есть такая оболочка — Bash — используйте ее: #!/bin/bash.

Zmicier ★★★★★
()
Ответ на: комментарий от testsia

А вот по поводу «sh ущербен» — это как?

Натурально. Такой sh, что не умеет массу всего. А именно — Debian Almquist Shell (dash). В Убунте под именем /bin/sh прячется именно он.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

Zmicier -спасибо за разъяснение вот только теперь следующее лажа: awk: not an option: --assign

Нагуглить также не могу, знаю нагло это но все же не подскажете как опцию правильно задать

testsia
() автор топика
Ответ на: комментарий от testsia

Это правильно заданная опция, почему вы думаете, что кто-то на Хабре накосячил?

Можете, конечно, в порядке тыка заменить --assign на -v, но покажите-ка лучше $ awk --version.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

Я не думаю что кто то на Харбе накосячил, статьи пишут гораздо умнее люди чем я. Просто питаюсь разобраться. Дело было в версии awk после: apt-get install gawk

скрипт стал выполнятся без ошибок но не находит в файле производителя хоть стреляй. Хотя 6 цифр беру непосредственно из скачанного файла:

root@zabbex:/home/scripts# ./mac.sh «2C-30-33» Searching for 2C-30-33... root@zabbex:/home/scripts#

Разбираюсь дальше.....

testsia
() автор топика
Ответ на: комментарий от testsia

Вас не смущает, что у вас уже которое письмо листинги в кашу? Прочитайте уже www.linux.org.ru/help/lorcode.md

Если mac.sh — это сценарий о 89-и строках, то он по всей очевидности не принимает цифры «непосредственно из скачанного файла» через дефис, но только через двоеточие или без разделителей.

статьи пишут гораздо умнее люди

Что, к слову, не мешает этому mac.sh быть безобразно написанным.

Zmicier ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.