2015-03-23 3 views
0

Я написал что-то в Applescript, которое я хотел бы изменить как сценарий оболочки. AppleScript выглядит следующим образом: Работает в Applescript, но не в оболочке

set computerlevel to do shell script "(profiles -P)" with administrator privileges 
 
if computerlevel contains "F2CC78D2-A63F-45CB-AE7D-BF2221D41218" then 
 
\t set theAnswer to "Active Directory Bind Present" 
 
else 
 
\t set theAnswer to "Active Directory Bind Not Present" 
 
end if

Он отлично работает, но я хотел бы написать оболочку версию сценария. Это то, к чему я придумал.

#!/bin/sh 
 
configprofiles='profiles -P' 
 
if $configprofiles == "F2CC78D2-A63F-45CB-AE7D-BF2221D41218"; then 
 
    echo "<result>Active Directory Bind Present.</result>" 
 
\t else 
 
\t \t echo "<result>Active Directory Bind Not Present.</result>" 
 
\t fi

Я думал, что это работает, но это было на самом деле идет вверх как ложный положительный. Вместо того, чтобы видеть, присутствует ли вся строка F2CC78D2-A63F-45CB-AE7D-BF2221D41218, я считаю, что это просто поиск любого из символов, приводящих к ложному положительному. Кто-нибудь знает, что не так? Заранее спасибо.

ответ

0

Просто пара синтаксических вещей ... Самое важное - это добавить [...] вокруг вашего теста. (Вы можете также предшествовать сравнение с test)

#!/bin/sh 
if profiles -P | grep attribute | awk '{print $4}' | grep -q "F2CC78D2-A63F-45CB-AE7D-BF2221D41218" 
then 
    echo "<result>Active Directory Bind Present.</result>" 
else 
    echo "<result>Active Directory Bind Not Present.</result>" 
fi 
+0

Благодаря @PeterSmith – dondo

+0

Благодаря @PeterSmith Unfortunetly результат теперь всегда отрицательна или, скорее, возвращая результат как «Справочник Bind Активный нет», когда он на самом деле присутствует. То, что я пытаюсь сделать, - проверить, установлены ли профили конфигурации на компьютере Mac. Самый точный способ, который я нашел, - проверить, существует ли uuid профиля в системном профилировщике. Команда профилей -P перечисляет все, что содержится в информации профиля системы. Таким образом, я пытаюсь сопоставить этот uuid с фактическим именем профиля конфигурации, в данном случае «Apple Directory Bind» – dondo

+0

@PeterSmith Возможно, вам нужно положить applescript в сценарий оболочки, поскольку он работает? Я просто не хочу эхо выводить результат так же, как сценарий оболочки. – dondo

0
#!/bin/sh 

if profiles -P | grep attribute | awk '{print $4}' | grep -q "F2CC78D2-A63F-45CB-AE7D-BF2221D41218" 
then 
    echo "<result>Active Directory Bind Present.</result>" 
else 
    echo "<result>Active Directory Bind Not Present.</result>" 
fi 
+0

Спасибо Питеру Бауэрсу! – dondo

0

Ваш сценарий был почти завершен, но сравнение точно. Чтобы создать сравнение «содержит», как в AppleScript, вы можете обернуть звездочку вокруг строки. Еще одна вещь, которую я обнаружил, заключается в том, что переменная содержит строку и не выполняет код. Чтобы выполнить команду и установить ее вывод в переменную, вы должны использовать $(command). И последнее, но не менее важное: другие ответы используют все дополнительные команды и трубопроводы, в то время как оболочка может справиться с этим довольно хорошо и не нуждается в таком сложном методе. Так что ваш сценарий будет выглядеть следующим образом:

#!/bin/sh 
configprofiles=$(profiles -P) 
if [[ $configprofiles == *"F2CC78D2-A63F-45CB-AE7D-BF2221D41218"* ]] 
then 
    echo "<result>Active Directory Bind Present.</result>" 
else 
    echo "<result>Active Directory Bind Not Present.</result>" 
fi 
Смежные вопросы