#!/bin/ksh #DEBUG=false DEBUG=: if [ $# != 1 ]; then cat < /dev/null rv=$? return $rv } insert_ProgramArguments_in_ssh_plist() { plutil -replace ProgramArguments -xml "$value_ProgramArguments" "$ssh_plist" rv=$? #! $DEBUG || plutil -convert xml1 -o - "$ssh_plist" diff -u <(plutil -convert xml1 -o - "$ssh_plist_bak") <(plutil -convert xml1 -o - "$ssh_plist") return $rv } remove_ProgramArguments_in_ssh_plist() { plutil -replace ProgramArguments -xml "$value_ProgramArguments_orig" "$ssh_plist" rv=$? #! $DEBUG || plutil -convert xml1 -o - "$ssh_plist" diff -u <(plutil -convert xml1 -o - "$ssh_plist_bak") <(plutil -convert xml1 -o - "$ssh_plist") return $rv } successfully_finished() { if ! $DEBUG; then echo "sudo launchctl unload $ssh_plist" 1>&2 echo "sudo launchctl load $ssh_plist" 1>&2 fi } modified=false if [ "$1" == enable ]; then if $DEBUG && [ ! -f "$ssh_plist" ]; then cp -p /System/Library/LaunchDaemons/ssh.plist "$ssh_plist" fi [ ! -f "$ssh_plist" ] || ssh_plist_bak="${ssh_plist}-$(fstrftime_l "$ssh_plist")" if check_ProgramArguments_in_ssh_plist; then if [ "$ssh_plist_bak" != "" ]; then mv "$ssh_plist" "$ssh_plist_bak" cp -p "$ssh_plist_bak" "$ssh_plist" fi insert_ProgramArguments_in_ssh_plist && modified=: else echo "$ssh_plist does not have ProgramArguments key" 1>&2 fi else [ ! -f "$ssh_plist" ] || ssh_plist_bak="${ssh_plist}-$(fstrftime_l "$ssh_plist")" if check_ProgramArguments_in_ssh_plist; then if [ "$ssh_plist_bak" != "" ]; then mv "$ssh_plist" "$ssh_plist_bak" cp -p "$ssh_plist_bak" "$ssh_plist" fi remove_ProgramArguments_in_ssh_plist && modified=: else echo "$ssh_plist does not have ProgramArguments key" 1>&2 fi fi $modified && successfully_finished