Improve error output

This commit is contained in:
hwdsl2 2016-06-29 02:40:52 -05:00
parent 8336260799
commit ac91fa9b79
5 changed files with 58 additions and 87 deletions

View File

@ -22,26 +22,23 @@
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
echoerr() { echo "$@" 1>&2; }
exiterr() { echo "Error: ${1}" >&2; exit 1; }
if [ "$(sed 's/\..*//' /etc/debian_version 2>/dev/null)" != "7" ]; then
echoerr "This script only supports Debian 7 (Wheezy)."
exit 1
exiterr "This script only supports Debian 7 (Wheezy)."
fi
if [ "$(uname -m)" != "x86_64" ]; then
echoerr "This script only supports 64-bit Debian 7."
exit 1
exiterr "This script only supports 64-bit Debian 7."
fi
if [ "$(id -u)" != 0 ]; then
echoerr "Script must be run as root. Try 'sudo sh $0'"
exit 1
exiterr "Script must be run as root. Try 'sudo sh $0'"
fi
# Create and change to working dir
mkdir -p /opt/src
cd /opt/src || exit 1
cd /opt/src || exiterr "Cannot enter /opt/src."
# Update package index and install wget
export DEBIAN_FRONTEND=noninteractive
@ -71,8 +68,6 @@ if [ -s "$deb1" ] && [ -s "$deb2" ] && [ -s "$deb3" ] && [ -s "$deb4" ] && [ -s
echo 'Completed! If no error, you may now proceed to run the VPN setup script.'
exit 0
else
echoerr
echoerr 'Could not download libnss/libnspr package(s). Aborting.'
/bin/rm -f "$deb1" "$deb2" "$deb3" "$deb4" "$deb5"
exit 1
exiterr 'Could not download libnss/libnspr package(s).'
fi

View File

@ -17,33 +17,28 @@ swan_ver=3.17
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
echoerr() { echo "$@" 1>&2; }
exiterr() { echo "Error: ${1}" >&2; exit 1; }
os_type="$(lsb_release -si 2>/dev/null)"
if [ "$os_type" != "Ubuntu" ] && [ "$os_type" != "Debian" ]; then
echoerr "This script only supports Ubuntu/Debian."
exit 1
exiterr "This script only supports Ubuntu/Debian."
fi
if [ -f /proc/user_beancounters ]; then
echoerr "This script does not support OpenVZ VPS."
exit 1
exiterr "This script does not support OpenVZ VPS."
fi
if [ "$(id -u)" != 0 ]; then
echoerr "Script must be run as root. Try 'sudo sh $0'"
exit 1
exiterr "Script must be run as root. Try 'sudo sh $0'"
fi
if [ -z "$swan_ver" ]; then
echoerr "Libreswan version 'swan_ver' not specified. Aborting."
exit 1
exiterr "Libreswan version 'swan_ver' not specified."
fi
/usr/local/sbin/ipsec --version 2>/dev/null | grep -qs "Libreswan"
if [ "$?" != "0" ]; then
echoerr "This script requires Libreswan already installed. Aborting."
exit 1
exiterr "This script requires Libreswan already installed."
fi
/usr/local/sbin/ipsec --version 2>/dev/null | grep -qs "Libreswan $swan_ver"
@ -100,7 +95,7 @@ esac
# Create and change to working dir
mkdir -p /opt/src
cd /opt/src || exit 1
cd /opt/src || exiterr "Cannot enter /opt/src."
# Update package index and install Wget
export DEBIAN_FRONTEND=noninteractive
@ -119,10 +114,10 @@ swan_file="libreswan-${swan_ver}.tar.gz"
swan_url1="https://download.libreswan.org/$swan_file"
swan_url2="https://github.com/libreswan/libreswan/archive/v${swan_ver}.tar.gz"
wget -t 3 -T 30 -nv -O "$swan_file" "$swan_url1" || wget -t 3 -T 30 -nv -O "$swan_file" "$swan_url2"
[ "$?" != "0" ] && { echoerr "Cannot download Libreswan source. Aborting."; exit 1; }
[ "$?" != "0" ] && exiterr "Cannot download Libreswan source."
/bin/rm -rf "/opt/src/libreswan-$swan_ver"
tar xzf "$swan_file" && /bin/rm -f "$swan_file"
cd "libreswan-$swan_ver" || { echoerr "Cannot enter Libreswan source dir. Aborting."; exit 1; }
cd "libreswan-$swan_ver" || exiterr "Cannot enter Libreswan source dir."
echo "WERROR_CFLAGS =" > Makefile.inc.local
if [ "$(packaging/utils/lswan_detect.sh init)" = "systemd" ]; then
apt-get -yq install libsystemd-dev
@ -130,10 +125,10 @@ fi
make -s programs && make -s install
# Verify the install and clean up
cd /opt/src || exit 1
cd /opt/src || exiterr "Cannot enter /opt/src."
/bin/rm -rf "/opt/src/libreswan-$swan_ver"
/usr/local/sbin/ipsec --version 2>/dev/null | grep -qs "$swan_ver"
[ "$?" != "0" ] && { echoerr; echoerr "Libreswan $swan_ver failed to build. Aborting."; exit 1; }
[ "$?" != "0" ] && exiterr "Libreswan $swan_ver failed to build."
# Restart IPsec service
service ipsec restart

View File

@ -17,37 +17,31 @@ swan_ver=3.17
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
echoerr() { echo "$@" 1>&2; }
exiterr() { echo "Error: ${1}" >&2; exit 1; }
if [ ! -f /etc/redhat-release ]; then
echoerr "This script only supports CentOS/RHEL."
exit 1
exiterr "This script only supports CentOS/RHEL."
fi
if ! grep -qs -e "release 6" -e "release 7" /etc/redhat-release; then
echoerr "This script only supports CentOS/RHEL 6 and 7."
exit 1
exiterr "This script only supports CentOS/RHEL 6 and 7."
fi
if [ -f /proc/user_beancounters ]; then
echoerr "This script does not support OpenVZ VPS."
exit 1
exiterr "This script does not support OpenVZ VPS."
fi
if [ "$(id -u)" != 0 ]; then
echoerr "Script must be run as root. Try 'sudo sh $0'"
exit 1
exiterr "Script must be run as root. Try 'sudo sh $0'"
fi
if [ -z "$swan_ver" ]; then
echoerr "Libreswan version 'swan_ver' not specified. Aborting."
exit 1
exiterr "Libreswan version 'swan_ver' not specified."
fi
/usr/local/sbin/ipsec --version 2>/dev/null | grep -qs "Libreswan"
if [ "$?" != "0" ]; then
echoerr "This script requires Libreswan already installed. Aborting."
exit 1
exiterr "This script requires Libreswan already installed."
fi
/usr/local/sbin/ipsec --version 2>/dev/null | grep -qs "Libreswan $swan_ver"
@ -95,7 +89,7 @@ esac
# Create and change to working dir
mkdir -p /opt/src
cd /opt/src || exit 1
cd /opt/src || exiterr "Cannot enter /opt/src."
# Install Wget
yum -y install wget
@ -103,7 +97,7 @@ yum -y install wget
# Add the EPEL repository
yum -y install epel-release
yum list installed epel-release >/dev/null 2>&1
[ "$?" != "0" ] && { echoerr "Cannot add EPEL repository. Aborting."; exit 1; }
[ "$?" != "0" ] && exiterr "Cannot add EPEL repository."
# Install necessary packages
yum -y install nss-devel nspr-devel pkgconfig pam-devel \
@ -124,18 +118,18 @@ swan_file="libreswan-${swan_ver}.tar.gz"
swan_url1="https://download.libreswan.org/$swan_file"
swan_url2="https://github.com/libreswan/libreswan/archive/v${swan_ver}.tar.gz"
wget -t 3 -T 30 -nv -O "$swan_file" "$swan_url1" || wget -t 3 -T 30 -nv -O "$swan_file" "$swan_url2"
[ "$?" != "0" ] && { echoerr "Cannot download Libreswan source. Aborting."; exit 1; }
[ "$?" != "0" ] && exiterr "Cannot download Libreswan source."
/bin/rm -rf "/opt/src/libreswan-$swan_ver"
tar xzf "$swan_file" && /bin/rm -f "$swan_file"
cd "libreswan-$swan_ver" || { echoerr "Cannot enter Libreswan source dir. Aborting."; exit 1; }
cd "libreswan-$swan_ver" || exiterr "Cannot enter Libreswan source dir."
echo "WERROR_CFLAGS =" > Makefile.inc.local
make -s programs && make -s install
# Verify the install and clean up
cd /opt/src || exit 1
cd /opt/src || exiterr "Cannot enter /opt/src."
/bin/rm -rf "/opt/src/libreswan-$swan_ver"
/usr/local/sbin/ipsec --version 2>/dev/null | grep -qs "$swan_ver"
[ "$?" != "0" ] && { echoerr; echoerr "Libreswan $swan_ver failed to build. Aborting."; exit 1; }
[ "$?" != "0" ] && exiterr "Libreswan $swan_ver failed to build."
# Restore SELinux contexts
restorecon /etc/ipsec.d/*db 2>/dev/null

View File

@ -33,28 +33,25 @@ YOUR_PASSWORD=''
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
echoerr() { echo "$@" 1>&2; }
exiterr() { echo "Error: ${1}" >&2; exit 1; }
os_type="$(lsb_release -si 2>/dev/null)"
if [ "$os_type" != "Ubuntu" ] && [ "$os_type" != "Debian" ]; then
echoerr "This script only supports Ubuntu/Debian."
exit 1
exiterr "This script only supports Ubuntu/Debian."
fi
if [ -f /proc/user_beancounters ]; then
echoerr "This script does not support OpenVZ VPS."
exit 1
exiterr "This script does not support OpenVZ VPS."
fi
if [ "$(id -u)" != 0 ]; then
echoerr "Script must be run as root. Try 'sudo sh $0'"
exit 1
exiterr "Script must be run as root. Try 'sudo sh $0'"
fi
eth0_state=$(cat /sys/class/net/eth0/operstate 2>/dev/null)
if [ -z "$eth0_state" ] || [ "$eth0_state" = "down" ]; then
cat 1>&2 <<'EOF'
Network interface 'eth0' is not available. Aborting.
Error: Network interface 'eth0' is not available.
Run 'cat /proc/net/dev' to find the active network interface,
then use it to replace ALL 'eth0' and 'eth+' in this script.
@ -75,8 +72,7 @@ if [ -z "$VPN_IPSEC_PSK" ] && [ -z "$VPN_USER" ] && [ -z "$VPN_PASSWORD" ]; then
fi
if [ -z "$VPN_IPSEC_PSK" ] || [ -z "$VPN_USER" ] || [ -z "$VPN_PASSWORD" ]; then
echoerr "All VPN credentials must be specified. Edit the script and re-enter them."
exit 1
exiterr "All VPN credentials must be specified. Edit the script and re-enter them."
fi
if [ "$(sed 's/\..*//' /etc/debian_version 2>/dev/null)" = "7" ]; then
@ -98,7 +94,7 @@ EOF
# Create and change to working dir
mkdir -p /opt/src
cd /opt/src || exit 1
cd /opt/src || exiterr "Cannot enter /opt/src."
# Update package index
export DEBIAN_FRONTEND=noninteractive
@ -136,12 +132,10 @@ PRIVATE_IP=${VPN_PRIVATE_IP:-''}
# Check IPs for correct format
IP_REGEX="^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"
if ! printf %s "$PUBLIC_IP" | grep -Eq "$IP_REGEX"; then
echoerr "Cannot find valid public IP. Edit the script and manually enter IPs."
exit 1
exiterr "Cannot find valid public IP. Edit the script and manually enter IPs."
fi
if ! printf %s "$PRIVATE_IP" | grep -Eq "$IP_REGEX"; then
echoerr "Cannot find valid private IP. Edit the script and manually enter IPs."
exit 1
exiterr "Cannot find valid private IP. Edit the script and manually enter IPs."
fi
# Install necessary packages
@ -161,10 +155,10 @@ swan_file="libreswan-${swan_ver}.tar.gz"
swan_url1="https://download.libreswan.org/$swan_file"
swan_url2="https://github.com/libreswan/libreswan/archive/v${swan_ver}.tar.gz"
wget -t 3 -T 30 -nv -O "$swan_file" "$swan_url1" || wget -t 3 -T 30 -nv -O "$swan_file" "$swan_url2"
[ "$?" != "0" ] && { echoerr "Cannot download Libreswan source. Aborting."; exit 1; }
[ "$?" != "0" ] && exiterr "Cannot download Libreswan source."
/bin/rm -rf "/opt/src/libreswan-$swan_ver"
tar xzf "$swan_file" && /bin/rm -f "$swan_file"
cd "libreswan-$swan_ver" || { echoerr "Cannot enter Libreswan source dir. Aborting."; exit 1; }
cd "libreswan-$swan_ver" || exiterr "Cannot enter Libreswan source dir."
echo "WERROR_CFLAGS =" > Makefile.inc.local
if [ "$(packaging/utils/lswan_detect.sh init)" = "systemd" ]; then
apt-get -yq install libsystemd-dev
@ -172,10 +166,10 @@ fi
make -s programs && make -s install
# Verify the install and clean up
cd /opt/src || exit 1
cd /opt/src || exiterr "Cannot enter /opt/src."
/bin/rm -rf "/opt/src/libreswan-$swan_ver"
/usr/local/sbin/ipsec --version 2>/dev/null | grep -qs "$swan_ver"
[ "$?" != "0" ] && { echoerr; echoerr "Libreswan $swan_ver failed to build. Aborting."; exit 1; }
[ "$?" != "0" ] && exiterr "Libreswan $swan_ver failed to build."
# Create IPsec (Libreswan) config
sys_dt="$(date +%Y-%m-%d-%H:%M:%S)"

View File

@ -33,32 +33,28 @@ YOUR_PASSWORD=''
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
echoerr() { echo "$@" 1>&2; }
exiterr() { echo "Error: ${1}" >&2; exit 1; }
if [ ! -f /etc/redhat-release ]; then
echoerr "This script only supports CentOS/RHEL."
exit 1
exiterr "This script only supports CentOS/RHEL."
fi
if ! grep -qs -e "release 6" -e "release 7" /etc/redhat-release; then
echoerr "This script only supports CentOS/RHEL 6 and 7."
exit 1
exiterr "This script only supports CentOS/RHEL 6 and 7."
fi
if [ -f /proc/user_beancounters ]; then
echoerr "This script does not support OpenVZ VPS."
exit 1
exiterr "This script does not support OpenVZ VPS."
fi
if [ "$(id -u)" != 0 ]; then
echoerr "Script must be run as root. Try 'sudo sh $0'"
exit 1
exiterr "Script must be run as root. Try 'sudo sh $0'"
fi
eth0_state=$(cat /sys/class/net/eth0/operstate 2>/dev/null)
if [ -z "$eth0_state" ] || [ "$eth0_state" = "down" ]; then
cat 1>&2 <<'EOF'
Network interface 'eth0' is not available. Aborting.
Error: Network interface 'eth0' is not available.
Run 'cat /proc/net/dev' to find the active network interface,
then use it to replace ALL 'eth0' and 'eth+' in this script.
@ -79,8 +75,7 @@ if [ -z "$VPN_IPSEC_PSK" ] && [ -z "$VPN_USER" ] && [ -z "$VPN_PASSWORD" ]; then
fi
if [ -z "$VPN_IPSEC_PSK" ] || [ -z "$VPN_USER" ] || [ -z "$VPN_PASSWORD" ]; then
echoerr "All VPN credentials must be specified. Edit the script and re-enter them."
exit 1
exiterr "All VPN credentials must be specified. Edit the script and re-enter them."
fi
cat <<'EOF'
@ -90,7 +85,7 @@ EOF
# Create and change to working dir
mkdir -p /opt/src
cd /opt/src || exit 1
cd /opt/src || exiterr "Cannot enter /opt/src."
# Make sure basic commands exist
yum -y install wget bind-utils openssl
@ -124,18 +119,16 @@ PRIVATE_IP=${VPN_PRIVATE_IP:-''}
# Check IPs for correct format
IP_REGEX="^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"
if ! printf %s "$PUBLIC_IP" | grep -Eq "$IP_REGEX"; then
echoerr "Cannot find valid public IP. Edit the script and manually enter IPs."
exit 1
exiterr "Cannot find valid public IP. Edit the script and manually enter IPs."
fi
if ! printf %s "$PRIVATE_IP" | grep -Eq "$IP_REGEX"; then
echoerr "Cannot find valid private IP. Edit the script and manually enter IPs."
exit 1
exiterr "Cannot find valid private IP. Edit the script and manually enter IPs."
fi
# Add the EPEL repository
yum -y install epel-release
yum list installed epel-release >/dev/null 2>&1
[ "$?" != "0" ] && { echoerr "Cannot add EPEL repository. Aborting."; exit 1; }
[ "$?" != "0" ] && exiterr "Cannot add EPEL repository."
# Install necessary packages
yum -y install nss-devel nspr-devel pkgconfig pam-devel \
@ -161,18 +154,18 @@ swan_file="libreswan-${swan_ver}.tar.gz"
swan_url1="https://download.libreswan.org/$swan_file"
swan_url2="https://github.com/libreswan/libreswan/archive/v${swan_ver}.tar.gz"
wget -t 3 -T 30 -nv -O "$swan_file" "$swan_url1" || wget -t 3 -T 30 -nv -O "$swan_file" "$swan_url2"
[ "$?" != "0" ] && { echoerr "Cannot download Libreswan source. Aborting."; exit 1; }
[ "$?" != "0" ] && exiterr "Cannot download Libreswan source."
/bin/rm -rf "/opt/src/libreswan-$swan_ver"
tar xzf "$swan_file" && /bin/rm -f "$swan_file"
cd "libreswan-$swan_ver" || { echoerr "Cannot enter Libreswan source dir. Aborting."; exit 1; }
cd "libreswan-$swan_ver" || exiterr "Cannot enter Libreswan source dir."
echo "WERROR_CFLAGS =" > Makefile.inc.local
make -s programs && make -s install
# Verify the install and clean up
cd /opt/src || exit 1
cd /opt/src || exiterr "Cannot enter /opt/src."
/bin/rm -rf "/opt/src/libreswan-$swan_ver"
/usr/local/sbin/ipsec --version 2>/dev/null | grep -qs "$swan_ver"
[ "$?" != "0" ] && { echoerr; echoerr "Libreswan $swan_ver failed to build. Aborting."; exit 1; }
[ "$?" != "0" ] && exiterr "Libreswan $swan_ver failed to build."
# Create IPsec (Libreswan) config
sys_dt="$(date +%Y-%m-%d-%H:%M:%S)"