прочитать строку plist в applescript

Я только начал возиться с applescript. Пожалуйста, проявите терпение к новичку... Это должно быть довольно просто, но все решения, которые я нашел до сих пор, слишком сложны для работы.

Мой файл user.plist выглядит так

<?xml version=1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple/DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <array>
        <dict>
            <key>rasp</key>
            <string>username</string>
            <key>192.168.178.203</key>
            <string>ip</string>
            <key>nhnhnh3</key>
            <string>password</string>
    </array>
</plist>

Я хотел бы прочитать эти строки в applescript. Там, где написано «insert_pw_here», я хотел бы прочитать и вставить строку pw из user.plist в этот скрипт.

do shell script "pmset displaysleep 15" password "insert_pw_here" with administrator priviliges

По сути, вместо того, чтобы помещать пароли, имена пользователей и т. д. непосредственно в яблочные скрипты, я планирую создать один файл .plist, из которого все яблочные скрипты смогут собирать необходимую информацию. Так что, если я что-то изменю, мне не придется менять несколько скриптов. Это должно быть очень просто сделать, но я не могу понять (еще раз: только начал работать с AS).

Заранее спасибо :)


person prankousky    schedule 13.02.2015    source источник


Ответы (1)


Прежде всего, когда вы выполняете сценарий оболочки do с правами администратора, вы фактически выполняете команду pmset, поэтому пароль не требуется.

Во-вторых, рассмотрите сценарий загрузки и сохраните команды сценария из стандартного дополнения, таким образом, вместо этого вы можете иметь свои свойства в объекте сценария, что намного проще программировать. Вы также можете прочитать об объектах сценария в руководстве по языку AppleScript. Мне жаль, что нет способа преодолеть проблемы с файлами списка свойств из applescript, но я думаю, что приложение/программа с именем plist buddy может хранить/извлекать значения plist для вас. Вы даже можете использовать команду plutil и сначала преобразовать plist в xml, а затем использовать XQuery для возврата значений.

ХТН

person McUsr    schedule 13.02.2015
comment
Спасибо за информацию. Я являюсь системным администратором на этом Mac, однако, когда я удаляю строку пароля, мне будет предложено ввести мой pw при запуске скрипта. Мне не обязательно читать plist-файл. Пока я могу прочитать любой файл, содержащий имя пользователя, пароль и IP, все будет в порядке. Я думал, что это должен быть файл plist, поэтому я и попросил об этом. - person prankousky; 13.02.2015
comment
Я цитирую руководство для pmset. pmset должен быть запущен от имени пользователя root, чтобы изменить какие-либо настройки. Таким образом, на самом деле вам не нужно вводить пароль пользователя, это ваш пароль администратора или пароль корневой учетной записи. И, может быть, это не работает, потому что вы не включили свою учетную запись администратора как root? Я думаю, Google - ваш друг в этом вопросе. Я не до конца понимаю проблему. - person McUsr; 13.02.2015
comment
Я понимаю. Впрочем, это не имеет значения. Я все еще планирую реализовать чтение нескольких переменных из файла - насколько я знаю, xml будет моим лучшим выбором. Я гуглил это, но похоже, что для этого нет примера, потому что то, что я хочу, слишком просто. Все вещи, которые я нашел, гораздо сложнее, и я не могу изменить их в соответствии со своими потребностями. Или невозможно просто прочитать три или четыре переменные (имя пользователя, пароль, ip, конкретное расположение файла, например) из файла xml и использовать их в яблочном скрипте? Спасибо :) - person prankousky; 13.02.2015
comment
Привет. На w3schools.com есть Xquery и другие учебники по XML, которые могут оказаться полезными. Инструмент командной строки plutil, который, по крайней мере, поставляется с инструментами разработчика, позволяет преобразовать файл plist в файл xml. И вы действительно не должны хранить пароли в файлах XML или текстовых файлах в этом отношении. Если речь действительно идет о возможности хранить некоторые объекты в файле, то я бы объявил объект сценария, который я бы сохранил и загрузил. Следующим лучшим способом является, например, Grep текстовый файл из сценария оболочки do, а затем извлечение значений из возвращенных абзацев сценария оболочки do. - person McUsr; 13.02.2015
comment
На самом деле, PlistBuddy, который поставляется с бесплатными инструментами для разработчиков Xcode, является вашим лучшим вариантом. Есть много полезных примеров использования. Вам нужно зарегистрировать учетную запись разработчика, чтобы получить Xcode, но просмотрите страницу загрузок и посмотрите, загружаете ли вы только инструменты командной строки, и если инструменты командной строки содержат PlistBuddy, если у вас есть сомнения по загрузке всего этого. - person McUsr; 14.02.2015