У меня есть два простых сценария, которые включают / отключают Cisco AnyConnect, когда я не хочу, чтобы он пытался подключиться при каждом входе в систему / при сетевом переходе.Все было хорошо, но я хотел добавить строку в файл hosts.Причина, по которой я использую «echo $ password | sudo -S» для большинства команд, заключается в том, что этот скрипт запускается из меню сценариев в Mac OS X. Окно терминала не открывается для обращения к запросам пароля sudo.
#!/bin/bash
#Start_AnyConnect.command
password=`/usr/bin/osascript <<EOT
with timeout of (30 * 60) seconds
tell application "Finder"
activate
set myReply to text returned of (display dialog "Enter your password to authorize AnyConnect startup script" default answer "" with hidden answer)
end tell
end timeout
EOT`
echo $password | sudo -S echo -e "127.0.0.1\twpad.company.com" >> /etc/hosts
sleep 2
echo $password | sudo -S mv "/Library/LaunchAgents_Disabled/com.cisco.anyconnect.gui.plist" "/Library/LaunchAgents/com.cisco.anyconnect.gui.plist"
echo $password | sudo -S mv "/Library/LaunchDaemons_Disabled/com.cisco.anyconnect.vpnagentd.plist" "/Library/LaunchDaemons/com.cisco.anyconnect.vpnagentd.plist"
echo $password | sudo -S launchctl load /Library/LaunchDaemons/com.cisco.anyconnect.vpnagentd.plist
sleep 5
open /Applications/Cisco/Cisco\ AnyConnect\ Secure\ Mobility\ Client.app
exit 0
У меня проблема в том, что
echo $password | sudo -S echo -e "127.0.0.1\twpad.company.com" >> /etc/hosts
добавляет "-e 127.0.0.1\twpad.company.com
" вместо "127.0.0.1 wpad.company.com
" в файл hosts.
Если я сам запускаю следующую команду, она работает как положено:
sudo echo -e "127.0.0.1\twpad.company.com" >> /etc/hosts
Есть ли другой способ сделать это?
Спасибо!