Итак, я обнаружил, что мне нужно было сделать, и выяснил, почему мой один лайнер не работал. Мне нужно было сломать это немного дальше. Мне удалось наконец установить имя компьютера в качестве префикса для клиента, последние шесть цифр серийного номера (я понимаю, что это немного произвольно, но это то, что хотел клиент) и год, когда был создан 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/ {print $4}' | cut -c 7-)
theModel=$(system_profiler SPHardwareDataType | grep 'Model Name:' | awk -F': ' '{print $2;}')
lastFour=$(system_profiler SPHardwareDataType | awk '/Serial/ {print $4}' | 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