Relative Path in launchd plist - path

I am currently using a plist to run a shell script.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.name.set</string>
<key>Program</key>
<string>/Users/username_here/Desktop/simple.sh</string>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>5</integer>
<key>StandardErrorPath</key>
<string>/tmp/com.name.example.stderr</string>
<key>StandardOutPath</key>
<string>/tmp/com.name.example.stdout</string>
</dict>
</plist>
This works! But when I change the program name to be
<string>/Desktop/simple.sh</string>
it doesn't run the script. also ~/Desktop/simple.sh does not work.
Is there a way to run the script without knowing the username and using an absolute path?
I am also getting this error message when I tail launchd.
com.apple.xpc.launchd[1] (com.name.example[8178]): Service could not initialize: 14F27: xpcproxy + 13421 [1402][AD0301C4-D364-31CE-8BA7-B5DBECE64D0A]: 0x2
Thanks!

Using a shell as arg0 and giving it a path relative to the user's home folder works for me:
<key>ProgramArguments</key>
<array>
<string>zsh</string>
<string>-c</string>
<string>~/CLI/scripts/list_open_jira_tickets --skip=5297 > ~/CLI/tmp/open_jira_tickets.txt</string>
</array>

If daemon is run as a per-user agent (installed in ~/Library/LaunchAgent) you can use a period get the relative path. Which would be the home folder (~/)
So you can do this:
<key>Program</key>
<string>./Desktop/simple.sh</string>
It might be nicer to save your program next to your plist:
./Library/LaunchAgents/simple.sh

Related

OSX Bash/Shell: How to pass/use "<", ">" (as Symbol/Char) and "\n" in Terminal command line?

I have a small OSX Bash/Shell script, when run it creates a new file and saves the given UserName from command line as String in a plist file.
With my command "CreateUser":
$ CreateUser -Name Cyborg
I get this plist file saved successfully:
<?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">
<dict>
<key>UserName</key>
<string>Cyborg</string>
</dict>
</plist>
I want to extend this plist file so I can add PhoneNumer below UserName but unfortunately cant edit the source code since it's a compiled binary file.
A solution I came up with by extend my command:
$ CreateUser -Name "Cyborg</string><key>PhoneNumber</key><string>0987654321"
And I get this results:
<?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">
<dict>
<key>UserName</key>
<string>Cyborg</string><key>PhoneNumber</key><string>0987654321</string>
</dict>
</plist>
The problem the Terminal don't like <, > or \n :(
Is there a way to get passed < and > instead of < and >?
I also tried to get new line with "\n" but it didnt work.
I tried <<<EOF without luck.
Desired result:
It would be great if I could get result like:
<?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">
<dict>
<key>UserName</key>
<string>Cyborg</string>
<key>PhoneNumber</key>
<string>0987654321</string>
</dict>
</plist>
Here is some of info which I can read from command "CreateUser" binary file:
lowercaseStringnewlengthcharacterAtIndex:appendBytes:length:isEqualToString:allocinitWithData:encoding:autoreleasedataUsingEncoding:base64EncodedStringWithOptions:standardUserDefaultsvalueForKey:stringWithFormat:defaultManagerfileExistsAtPath:initWithContentsOfFile:initsetObject:forKey:writeToFile:atomically:componentsSeparatedByString:objectAtIndex:stringByReplacingOccurrencesOfString:withString:UserInfo%#Name/savefile/UserInfo.plistUserName; UserInfoXML =
The question:
Is there a way to make a pipe , cat, echo etc or any other option to get deired results with my command?
Thanks a million, any help is highly appreciated.

Possible to use self-signed SSL certificate with itms-services

I'm trying to install a beta app to an iOS device and am hosting the manifest.plist and IPA file on HTTPS with a self-signed certificate. When I hit the itms-services:// link, I get an error of "Cannot connect to <ip address>".
itms-services link:
itms-services://?action=download-manifest&url=https://10.0.1.2:1338/ipa/manifest.plist
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">
<dict>
<key>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>https://10.0.1.2:1338/ipa/test.ipa</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.company.test</string>
<key>bundle-version</key>
<string>1.0</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>test</string>
</dict>
</dict>
</array>
</dict>
</plist>
Try adding your certificate to the trusted ones (probably, easiest thing to do is to mail a cer file to device and open it from standard mail app to install).
Another thing you need to make sure is that your server supports TLS 1.2 and Forward Secrecy.
You can use nscurl --ats-diagnostics https://example.com/app.ipa to check if everything done right.
Its possible:
Create the certificate file (export as DER encode X.509)
Access file from device via HTTP (like the manifest.plist in your example)
Agree to install it in device
Turn it on: https://support.apple.com/en-au/HT204477

Starting YAWS using launchd under Mac OS X Yosemite

I am trying to setup Yaws (installed via Homebrew) to start automatically under OS X Yosemite using the following PLIST:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>ca.seidlitz.yaws</string>
<key>ProgramArguments</key>
<array>
<string>sh</string>
<string>-c</string>
<string>/usr/local/Cellar/yaws/1.98/bin/yaws --daemon --conf /usr/local/Cellar/yaws/1.98/etc/yaws/yaws.conf</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>WorkingDirectory</key>
<string>/usr/local/opt/yaws</string>
<key>StandardOutPath</key>
<string>/tmp/yaws.log</string>
<key>StandardErrorPath</key>
<string>/tmp/yaws_err.log</string>
</dict>
</plist>
I tried to load this plist using sudo launchctl load /Library/LaunchDaemons/ca.seidlitz.yaws.plist
but with no luck. I don't get any error in /var/system.log, while the /tmp/yaws.log contains this error: "1> *** Terminating erlang (nonode#nohost)"
I also tried running it as daemon and in interactive mode. Daemon doesn't generate any errors in the log file but Yaws is not running.
Can anyone spot any issues with the plist?
You should make the /usr/local/Cellar/yaws/1.98/bin/yaws script executable if it isn't already, get rid of the sh -c invocation, and properly declare the yaws script and its arguments as separate strings, all like this:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>ca.seidlitz.yaws</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/Cellar/yaws/1.98/bin/yaws</string>
<string>--daemon</string>
<string>--conf</string>
<string>/usr/local/Cellar/yaws/1.98/etc/yaws/yaws.conf</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>WorkingDirectory</key>
<string>/tmp</string>
<key>StandardOutPath</key>
<string>/tmp/yaws.log</string>
<key>StandardErrorPath</key>
<string>/tmp/yaws_err.log</string>
</dict>
</plist>

How add entitlement "com.apple.springboard.launchapplications" for jailbreak iPhone [duplicate]

I have some problems.
I want use in my app next function:
int SBSLaunchApplicationWithIdentifier(CFStringRef displayIdentifier, Boolean suspended);
I add SpringboardServices.framework in my project
I add URL Schemes for my app
Created the file entitlement.xml with
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.springboard.launchapplications</key>
<true/>
</dict>
</plist>
Paste entitlement.xml in `Developer/Xcode/DerivedData/MyApp-efjwoxgwdyixnfassijmwtptxvlj/Build/Products/Debug-iphoneos/
Paste ldid in Developer/Xcode/DerivedData/MyApp-efjwoxgwdyixnfassijmwtptxvlj/Build/Products/Debug-iphoneos/
Did ./ldid -Sentitlement.xml MyApp.app/MyApp in console.
It's good working
But I saw some problem:
I did ./ldid -e MyApp.app/MyApp and saw next in console(double output entitlement.xml):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "apple.com/DTDs/PropertyList-1.0.dtd">;
<plist version="1.0">
<dict>
<key>com.apple.springboard.launchapplications</key>
<true/>
</dict>
</plist>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "apple.com/DTDs/PropertyList-1.0.dtd">;
<plist version="1.0">
<dict>
<key>com.apple.springboard.launchapplications</key>
<true/>
</dict>
</plist>
I create MyApp.ipa file consist with:
ItunesArtwork
Payload
|---MyApp.app
|---Info.plist
I installed this ipa file on my jailbreak iPhone via iTools
MyApp is run but can't do some function. I try authorization via Internet and it's false. But when I installed app without added entitlement an didn't do some instruction with ldid, application working fine.
P.S: i didn't set in true Targets->AppName->Summary->Entitlements property (is it true or false ?)
Please help me

ibtool not parsing iOS .strings file

When loading my .strings file for localization via this command: --strings-file ja.lproj/localizable.strings en.lproj/AdvancedSearchView.xib --write ja.lproj/AdvancedSearchView.xib I continually get this error:
<?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">
<dict>
<key>com.apple.ibtool.errors</key>
<array>
<dict>
<key>description</key>
<string>The strings file "localizable.strings" could not be applied.</string>
<key>recovery-suggestion</key>
<string>The stringsfile localizable.strings could not be parsed.</string>
<key>underlying-errors</key>
<array>
<dict>
<key>description</key>
<string>The strings file "localizable.strings" could not be applied.</string>
<key>recovery-suggestion</key>
<string>The stringsfile localizable.strings could not be parsed.</string>
</dict>
</array>
</dict>
</array>
</dict>
</plist>
However, when I load my file into plutil via plutil -p ja.lproj/localizable.strings the strings file parses correctly. Any help as to have ibtool parse the file correctly would be highly appreciated.

Resources