I am getting a "line 47: syntax error: unexpected end of file", why? According to my estimate, line 47 is 2 lines after the last line of code here. Also, the $1 variable represents the current user logging in, and the script runs with root privileges (This is a Mac OS login hook script using BASH).
#!/bin/bash
# Script to Create a userChrome.css, lock down network prefs, and remove /Applications/iTunes.app
# Defining Variables, DIR2 is the User's home directory path on server, DIR is the User's Firefox Profile Name
DIR2=`dscacheutil -q User |grep ${1} |grep dir |awk '{print $2}'`
DIR=`ls ${DIR2}/Library/Application\ Support/Firefox/Profiles |grep default`
MANAGERS='dixonb,oconnorw,abbaziam,freym,rosik,cicciag,brownd,localadmin,leventhalg,effiongw,heeseb'
# Do not run script if the user logging in is an admin (Manager or MIS user, see list above)
echo $MANAGERS |grep -q ${1}
if [ $? -eq 0 ]; then
exit
else
echo ""
# Check for userchrome file to remove Firefox network settings button and lock down preferences for user
if [ -e ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css ]; then
echo ""
else
cd ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome ; touch ./userChrome.css
fi
echo "@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* set default namespace to XUL */" > ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
echo "#BrowserPreferences #connectionSettings {display: none !important;}" >> ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
echo "#BrowserPreferences #connectionGroup {display: none !important;}" >> ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
# Set permissions so user cannot change or delete userchrome.
#chown admin ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
#chown admin ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome
#chmod 1755 ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
cat ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js |grep 192.168.171.4 || printf "%s\n" 'user_pref("network.proxy.http", "192.168.171.4");' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.http_port", 8080);' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.no_proxies_on", "localhost, 127.0.0.1, conair.com, conair.lan,");' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.type", 1);' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js
# Remove iTunes if it exists in /Applications
if [ -e /Applications/iTunes.app ]; then
rm -rf /Applications/iTunes.app
else
echo ""
fi
---------- Post updated at 10:40 AM ---------- Previous update was at 10:38 AM ----------
This is a login hook which means it runs when a user logs in, runs with root privileges, and the $1 variable represents the current user who is logging in. Mac OS X
[quote=glev2005;302363081]
I am getting a "line 47: syntax error: unexpected end of file", why?
#!/bin/bash
# Script to Create a userChrome.css, lock down network prefs, and remove /Applications/iTunes.app
# Defining Variables, DIR2 is the User's home directory path on server, DIR is the User's Firefox Profile Name
DIR2=`dscacheutil -q User |grep ${1} |grep dir |awk '{print $2}'`
DIR=`ls ${DIR2}/Library/Application\ Support/Firefox/Profiles |grep default`
MANAGERS='dixonb,oconnorw,abbaziam,freym,rosik,cicciag,brownd,localadmin,leventhalg,effiongw,heeseb'
# Do not run script if the user logging in is an admin (Manager or MIS user, see list above)
echo $MANAGERS |grep -q ${1}
if [ $? -eq 0 ]; then
exit
else
echo ""
????? where is the fi clause
# Check for userchrome file to remove Firefox network settings button and lock down preferences for user
if [ -e ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css ]; then
echo ""
else
cd ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome ; touch ./userChrome.css
fi
echo "@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* set default namespace to XUL */" > ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
echo "#BrowserPreferences #connectionSettings {display: none !important;}" >> ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
echo "#BrowserPreferences #connectionGroup {display: none !important;}" >> ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
# Set permissions so user cannot change or delete userchrome.
#chown admin ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
#chown admin ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome
#chmod 1755 ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
cat ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js |grep 192.168.171.4 || printf "%s\n" 'user_pref("network.proxy.http", "192.168.171.4");' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.http_port", 8080);' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.no_proxies_on", "localhost, 127.0.0.1, conair.com, conair.lan,");' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.type", 1);' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js
# Remove iTunes if it exists in /Applications
if [ -e /Applications/iTunes.app ]; then
rm -rf /Applications/iTunes.app
else
echo ""
fi
I'm sorry I wish it were that easy, but I must have accidentally erased the fi when I copied it up to UNIX.com Here is the actual script copied again complete.
#!/bin/bash
# Script to Create a userChrome.css, lock down network prefs, and remove /Applications/iTunes.app
# Defining Variables, DIR2 is the User's home directory path on server, DIR is the User's Firefox Profile Name
DIR2=`dscacheutil -q User |grep ${1} |grep dir |awk '{print $2}'`
DIR=`ls ${DIR2}/Library/Application\ Support/Firefox/Profiles |grep default`
MANAGERS='dixonb,oconnorw,abbaziam,freym,rosik,cicciag,brownd,localadmin,leventhalg,effiongw,heeseb'
# Do not run script if the user logging in is an admin (Manager or MIS user, see list above)
echo $MANAGERS |grep -q ${1}
if [ $? -eq 0 ]; then
exit
else
echo ""
fi
# Check for userchrome file to remove Firefox network settings button and lock down preferences for user
if [ -e ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css ]; then
echo ""
else
cd ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome ; touch ./userChrome.css
fi
echo "@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* set default namespace to XUL */" > ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
echo "#BrowserPreferences #connectionSettings {display: none !important;}" >> ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
echo "#BrowserPreferences #connectionGroup {display: none !important;}" >> ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
# Set permissions so user cannot change or delete userchrome.
#chown admin ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
#chown admin ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome
#chmod 1755 ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
cat ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js |grep 192.168.171.4 || printf "%s\n" 'user_pref("network.proxy.http", "192.168.171.4");' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.http_port", 8080);' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.no_proxies_on", "localhost, 127.0.0.1, conair.com, conair.lan,");' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.type", 1);' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js
# Remove iTunes if it exists in /Applications
if [ -e /Applications/iTunes.app ]; then
rm -rf /Applications/iTunes.app
else
echo ""
fi
Hi, when I've had similar messages on a Linux system it's usually because I've forgotten to exit the code correctly. I notice that you have on line 10 ( skipping blank lines ) you have "exit" but don't give an exit code, try:
exit 0
also I can't find any other exit command which means your code runs reaches the end it doesn't exit so the shell unexpectedly gets to the end of the file. Try adding exit 0 after the last line. So your complete code would look like this:
#!/bin/bash
# Script to Create a userChrome.css, lock down network prefs, and remove /Applications/iTunes.app
# Defining Variables, DIR2 is the User's home directory path on server, DIR is the User's Firefox Profile Name
DIR2=`dscacheutil -q User |grep ${1} |grep dir |awk '{print $2}'`
DIR=`ls ${DIR2}/Library/Application\ Support/Firefox/Profiles |grep default`
MANAGERS='dixonb,oconnorw,abbaziam,freym,rosik,cicciag,brownd,localadmin,leventhalg,effiongw,heeseb'
# Do not run script if the user logging in is an admin (Manager or MIS user, see list above)
echo $MANAGERS |grep -q ${1}
if [ $? -eq 0 ]; then
exit 0
else
echo ""
fi
# Check for userchrome file to remove Firefox network settings button and lock down preferences for user
if [ -e ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css ]; then
echo ""
else
cd ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome ; touch ./userChrome.css
fi
echo "@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* set default namespace to XUL */" > ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
echo "#BrowserPreferences #connectionSettings {display: none !important;}" >> ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
echo "#BrowserPreferences #connectionGroup {display: none !important;}" >> ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
# Set permissions so user cannot change or delete userchrome.
#chown admin ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
#chown admin ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome
#chmod 1755 ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
cat ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js |grep 192.168.171.4 || printf "%s\n" 'user_pref("network.proxy.http", "192.168.171.4");' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.http_port", 8080);' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.no_proxies_on", "localhost, 127.0.0.1, conair.com, conair.lan,");' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.type", 1);' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js
# Remove iTunes if it exists in /Applications
if [ -e /Applications/iTunes.app ]; then
rm -rf /Applications/iTunes.app
else
echo ""
fi
exit 0
I edited the file using textwrangler on my Mac, so no, it has only been OS X. I did think about that though, that perhaps the editor put a special character somewhere, but this app is supposed to be used for this type of stuff, so I would hope it doesnt do that. jkdwiz, I will try your idea.
---------- Post updated at 10:25 AM ---------- Previous update was at 10:22 AM ----------
I will see if that works next time they log in.. Also if anyone has any suggestions for cleaning u my code, I would love to improve my BASH.