Вопрос Скрипт для получения mac и записи в файл


Моя работа должна клонировать некоторые тонкие клиенты, и они используют Ubuntu в качестве базы для клиента VMware, но проблема в том, что нам нужно вручную отредактировать строку в / etc / vmware / view-required-config с MAC-адресом оборудования.

view.sslVerificationMode = "3"
view.defaultUser = "CM-d4_85_64_71_58_44"
view.autoConnectDesktop = "TRUE"
view.autoConnectBroker = "TRUE"
view.kioskLogin = "TRUE"
view.nonInteractive = "TRUE"
view.fullScreen = "TRUE"
view.nomenubar = "TRUE"
view.defaultBroker = "viewcs"

Нам нужно создать скрипт, который запускается автоматически при загрузке (1 раз и удалять его самостоятельно) и получить MAC-адрес eth0 и прошлое, как в файле конфигурации выше.

view.defaultUser = "CM-d4_85_64_71_58_44"

Нам нужно это, чтобы мы могли сэкономить много времени.

---РЕДАКТИРОВАТЬ--- С ответом я сделал следующий сценарий, еще неполный, но работает.

MAC=$(ifconfig eth0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}')
echo "
view.sslVerificationMode = *3*
view.autoConnectDesktop = *TRUE*
view.autoConnectBroker = *TRUE*
view.kioskLogin = *TRUE*
view.nonInteractive = *TRUE*
view.fullScreen = *TRUE*
view.nomenubar = *TRUE*
view.defaultBroker = *viewcs*
view.defaultUser = *CM-${MAC//:/_}*
" > /etc/vmware/view-mandatory-config;
sed -i 's/*/"/g' /etc/vmware/view-mandatory-config

Это неполно, потому что я не знаю, как печатать («) в файле, поэтому я использовал *, и после того, как я использовал« sed », чтобы изменить * на («), он работает как шарм.

Я не знаю, почему, но я не смог запустить этот скрипт в процессе загрузки.

Сначала я установил его в /etc/rc.local, и он не сработал. Во-вторых, я попытался поместить его в crontab как @reboot /etc/vmware/MAC.sh, и он не сработал.

Спасибо за вашу помощь.


2
2018-04-29 20:34


происхождения


ifconfig eth0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}' получит MAC-адрес. (Из stackoverflow.com/questions/245916/...) Я плохо разбираюсь в сценариях оболочки, все еще учась, но, возможно, кто-то может помочь принести это в текстовый файл - No Time


ответы:


Это должно дать вам нужную вам строку.

MAC=$(ifconfig eth0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'); echo "CM-${MAC//:/_}";

замещать eth0 с любым интерфейсом. Вывод:

CM-d4_85_64_71_58_44

grep код пришел отсюда:

https://stackoverflow.com/questions/245916/best-way-to-extract-mac-address-from-ifconfig-output


2
2018-04-29 21:41



Когда я запускал скрипт, я получил ошибку: ./MAC.sh: 2: ./MAC.sh: Плохая замена, если я использую следующую часть непосредственно на терминале, я получил mac на моем экране. $ (ifconfig eth0 | grep -o -E '([[: xdigit:]] {1,2}:) {5} [[: xdigit:]] {1,2}') - André M. Faria
Можете ли вы опубликовать, как вы поместили его в скрипт MAC.sh? - Nattgew
Я начал с #! / Bin / sh, но я прочитал в другом вопросе, что мне нужно использовать #! / Bin / bash, и это сработало, я отредактирую свой главный пост с дополнительной информацией. - André M. Faria