Итак, я обнаружил, что мне нужно было сделать, и выяснил, почему мой один лайнер не работал. Мне нужно было сломать это немного дальше. Мне удалось наконец установить имя компьютера в качестве префикса для клиента, последние шесть цифр серийного номера (я понимаю, что это немного произвольно, но это то, что хотел клиент) и год, когда был создан Macbook или iMac. используя следующее. Я до сих пор не уверен, почему мой единственный лайнер не работает, я думаю, это потому, что где-то есть несвязанный токен. Я был в состоянии сделать это функция за функцией, как Тото вроде:
#!/bin/bash # Logging exec 3>&1 4>&2 trap 'exec 2>&4 1>&3' 0 1 2 3 exec 1>>/private/var/log/"$(basename $0)"_"$(date "+%Y%m%d_%H%M%S")".log 2>&1 # Variables theSerial=$(system_profiler SPHardwareDataType | awk '/Serial/ ' | cut -c 7-) theModel=$(system_profiler SPHardwareDataType | grep 'Model Name:' | awk -F': ' '') lastFour=$(system_profiler SPHardwareDataType | awk '/Serial/ ' | cut -c 9-) theYear=$(curl -s https://support-sp.apple.com/sp/product?cc=$lastFour | grep -o '\d\d\d\d') #XXX is a client code slug # Begin script echo "Begin script: $(theNow)" # Write: ComputerName, HostName, LocalHostName, NetBIOS touch /private/var/log/fv2.log scutil --set ComputerName "XXX-$theSerial-$theYear" #XXX is a client code slug scutil --set HostName "XXX-$theSerial-$theYear" scutil --set LocalHostName "XXX-$theSerial-$theYear" defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server NetBIOSName "XXX-$theSerial-$theYear" echo "XXX-" > /private/var/log/fv2.log # Finish up echo "Finish Script: $theNow" exit 0
Две вещи - 1 - старые машины Apple могут иметь серийные номера с различным количеством символов. Я не думаю, что они попадут в сферу жизни моего сценария, поэтому мне не нужно сначала считать символы - тогда Apple может когда-нибудь прекратить предоставлять эту услугу или переформатировать ее, добавив еще одну строку из 4 цифр в строку xml, который сломает это.
Это приемлемые риски для меня, но может сломать это в будущем. Это единственный способ получить год выпуска компьютера Apple в виде переменной в командной строке, о которой я знаю.
JC