прочетете 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

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

Благодаря предварително :)


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


Отговори (1)


Първо, когато изпълнявате do shell скрипта с администраторски привилегии, вие на практика изпълнявате sudo командата pmset, така че не е необходима парола.

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

HTH

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