Изо всех сил, чтобы распечатать IP (openvpn) Tun0 адрес - PullRequest
0 голосов
/ 23 марта 2020

Я работаю над совершенствованием своих навыков BASH и создаю проект для добавления кнопки GUI для запуска моего сеанса openvpn.

Я пытаюсь распечатать свой адрес TUN0 (VPN) для экран в зените.

Когда я запускаю это:

"ip address | grep -sw" inet "| cut -d" "-f 6 | grep 10.10. * | Head -n 1)"

Предоставляет правильную информацию, но при запуске в виде скрипта выдает пустой вывод. Когда я снова запускаю скрипт, он работает .. как мне заставить это работать каждый раз.

(Это для лабораторий HTB, и адрес всегда будет 10.10.)

Ниже приведен фрагмент кода:

IPADDRESS="$(ip address | grep -sw "inet" | cut -d " " -f 6 | grep 10.10.* | head -n 1)" 

#Show user what the local host is on VPN network

zenity --width=250 --height=250 --title "Hacktime" --info --text "Your VPN address is: $IPADDRESS" 

Редактировать * Очистить код из ShellCheck:

#!/bin/bash

# Variables 

#TODO: Add a VPN option for Offsec and htb 

set -m 

FILE="hacktime"
SERVICE="openvpn"
PROCESS="pgrep -x $SERVICE "
KILLPROCESS="$(pgrep -x "$SERVICE" )"
IPADDRESS="$(ip address | grep -sw "inet" | cut -d " " -f 6 | grep "10.10.*" | head -n 1)"
title="Select example"
prompt="Pick an option:"
options=("HTB" "OffSec")

zenity --width=350 --height=150 --question --title "Hacktime" --text='Do you want to run the VPN?'
if [ "$?" != 0 ]
then
    exit
fi

#kill any connections that might be in place already to run only one VPN at a time to HTB

    if $PROCESS &> /dev/null
then
    kill "$KILLPROCESS"
fi

if echo 'ifconfig tun0' | grep -q "00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00"
then
echo "VPN is down"
else
ifconfig tun0 down && zenity --width=350 --height=150 --title "Hacktime" --info --text "Closing old VPN Connection"
fi


# Make sure its in the local bin file for (Also used as the script backup and update feature)

if [ ! -d "/bin/$FILE" ]; then

    cp $FILE /bin &> /dev/null
    chmod 777 /bin/$FILE &> /dev/null
    cp $FILE ~/Desktop/$FILE &> /dev/null
    chmod 777 ~/Desktop/$FILE &> /dev/null
else 

    rm /bin/$FILE
    rm ~/Desktop/$FILE
        cp $FILE /bin &> /dev/null
    cp $FILE ~/Desktop/hacktime &> /dev/null
    chmod 777 /bin/$FILE &> /dev/null
    chmod 777 ~/Desktop/$FILE &> /dev/null
fi



# Choose which vpn to use 

while opt=$(zenity --title="$title" --text="$prompt" --list  --column="Options"  "${options[@]}"); do
    select=""

    case "$opt" in
    "${options[0]}" ) select="HTB";;
    "${options[1]}" ) select="OffSec";;

  *) zenity --error --text="Invalid option, OK to exit"  && continue
    esac

       if zenity --question --text=" $select" ; then break ;fi

    if (( ${options[0]} == 0 )) ; then
    zenity --width=350 --height=150 --title "Hacktime" --error --text "IT WORKED! " 
    elif (( ${options[1]} == 0 )) ; then
    echo "OffSec"
    else
    echo "Invalid choice!!"
    fi
done > /dev/null 2>&1
    cd ~/Downloads || exit


    sudo -b openvpn NAME.ovpn 



# Check that there is an internet connection 

 intertube=0
while [ $intertube -ne 1 ]; do
        ping -q -c 1 -W 1 8.8.8.8 &> /dev/null
        if [ $? -eq  0 ]; then
                zenity --width=250 --height=250 --info --title "Hacktime" --text "Internet is is OK: Connecting VPN..."
                intertube=1;
        else
                zenity --width=350 --height=150 --title "Hacktime" --error --text "Internet is down! Connect to internet before starting VPN" 
        echo "$IPADDRESS"
        fi
done

# Show user what the local host is on VPN network
    zenity --width=250 --height=250 --title "Hacktime" --info --text "Your VPN address is: $IPADDRESS"


exit
...