Advertisement
ezarchproject

OLd Network shellscript from Ezarch 0.5

Jan 25th, 2015
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 12.50 KB | None | 0 0
  1. #!/bin/bash
  2. #-------------------------------------------------------------------------------
  3. # Script Created by Vincent - EZ-Arch Project (ezarchproject@gmail.com)
  4. # Distro Sourceforge - https://sourceforge.net/projects/ezarchlinux/
  5. # Distro Youtube -   E-Z Arch Project.
  6. #
  7. # About these Scripts. Some were inspired from AUI Installer on ARCH Linux
  8. # and some came out of FreeBSD too and couple of commerical UNIX such as dfspace
  9. #
  10. #-------------------------------------------------------------------------------
  11. #This program is free software: you can redistribute it and/or modify
  12. #it under the terms of the GNU General Public License as published by
  13. #the Free Software Foundation, either version 3 of the License, or
  14. #(at your option) any later version.
  15. #
  16. #This program is distributed in the hope that it will be useful,
  17. #but WITHOUT ANY WARRANTY; without even the implied warranty of
  18. #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19. #GNU General Public License for more details.
  20. #
  21. #You should have received a copy of the GNU General Public License
  22. #along with this program.  If not, see <http://www.gnu.org/licenses/>.
  23. #-------------------------------------------------------------------------------
  24. # Run this script after your first boot with archlinux (as root)
  25. #--------------------------------------------------------------------------------
  26. # Explaination of the Script:
  27. #
  28. # This is for Networking side of things on Arch Linux
  29. #
  30. #  I have only used DHCP and havent really dealt with other types of
  31. #  Networking to deal with the installation of this OS.
  32. #
  33. #
  34. #  This servs perpose at work
  35. #
  36. # -----------------------------------------------------------------------------------
  37. #
  38. #
  39. #
  40. INSTALLDIR=/usr/INSTALLER/lib  # New Location of this Installer
  41.  
  42. if [[ -f $INSTALLDIR/gfuncs.sh ]]; then
  43.   source $INSTALLDIR/gfuncs.sh
  44.  
  45. #  if [[ -f ./gfuncs.sh ]]; then
  46. #  source ./gfuncs.sh
  47. else
  48.   echo "Error missing file: gfuncs.sh - Required for installer"
  49.   echo "Installer's Directory is $INSTALLDIR"
  50.   exit 1
  51. fi
  52. #-------------------------------------------------------------------------------
  53.  
  54. #Examples in /etc/netctl/examples
  55.  
  56. EDITOR=nano
  57.  
  58. NETCTLDIR=/etc/netctl
  59. NETCTLEX=/etc/netctl/examples
  60.  
  61.  
  62.  
  63. # Network Tasks
  64. NTASK1='-'
  65. NTASK2='-'
  66. NTASK3='-'
  67. NTASK4='-'
  68.  
  69.  
  70. # Configure Network Cards
  71.  
  72. ############################### Config Network Devices
  73.  
  74. # 1st NIC
  75.  
  76. Config1NIC()
  77.  
  78. {
  79. # 1st Network Devices    if more than 1 is installed
  80. WIRED_DEV=`ip link | grep enp | awk '{print $2}' | sed 's/://' | sed '1!d'`
  81. WIRELESS_DEV=`ip link | grep wlp | awk '{print $2}' | sed 's/://' | sed '1!d'`
  82.  
  83. #          
  84.             echo "Configuring 1st wired NIC, (if any installed):   ${BCyan}$WIRED_DEV${Reset}"
  85.             echo "Configuring 1st wireless NIC, (if any installed): ${BYellow}$WIRELESS_DEV ${Reset}"
  86.             echo
  87.             echo " Wired Automatic is DHCP, Wired Manual is Static IPs,"
  88.             echo
  89.             Connection_Type_list=("Wired Automatic" "Wired Manual"  "Wireless" "Configure Proxy" "Skip");
  90.             PS3="${BYellow}Select network connection type planning to use: ${Reset}"
  91.                 select CONNECTIONTYP in "${Connection_Type_list[@]}"
  92.                     do
  93.                         case "$REPLY" in
  94.                             1)
  95.                                     echo
  96.                                     echo "Starting Systemctl DHCP"
  97.                                     systemctl start dhcpcd@${WIRED_DEV}.service
  98.                                 break
  99.                                 ;;
  100.                             2)
  101.                                     echo
  102.                                     echo "Stopping Systemctl DHCP"
  103.                                     systemctl stop dhcpcd@${WIRED_DEV}.service
  104.                                     read -p "IP Address: " IP_ADDR
  105.                                     read -p "Subnet Mask: " SUBNET_MSK
  106.                                     read -p "Gateway: " GATEWAY
  107.                                     echo "Setting up Network"
  108.                                     ip link set ${WIRED_DEV} up         # Puts network card up
  109.                                     ip addr add ${IP_ADDR}/${SUBNET_MSK} dev ${WIRED_DEV} # Assigns IP address to NIC
  110.                                     ip route add default via ${GATEWAY}
  111.                                     echo
  112.                                     echo "Editing the /etc/resolve.conf"
  113.                                     echo
  114.                                     sleep 4
  115.                                     $EDITOR /etc/resolve.conf
  116.                                    
  117.                                 break
  118.                                 ;;
  119.                             3)
  120.                                     ip link set ${WIRELESS_DEV} up
  121.                                     wifi-menu ${WIRELESS_DEV}
  122.                                 break
  123.                                 ;;
  124.                             4)
  125.                                     read -p "Enter your proxy e.g. Protocol://address:port " OPTION
  126.                                     export http_proxy=$OPTION
  127.                                     export https_proxy=$OPTION
  128.                                     export ftp_proxy=$OPTION
  129.                                     echo "proxy = $OPTION" > ~/.curlrc
  130.                                     break
  131.                                 ;;
  132.                                
  133.                             5) 
  134.                                 break
  135.                             ;;
  136.                             *)
  137.                                 invaild_option
  138.                             ;;
  139.                         esac
  140.                     done
  141.  
  142. echo "You may test it out using the pings in the main menu"
  143. pause_function         
  144.                        
  145. }
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152. Config2NIC()
  153.  
  154. {
  155. # 2nd Network Devices    if more than 1 is installed
  156. WIRED_DEV=`ip link | grep enp | awk '{print $2}' | sed 's/://' | sed '2!d'`
  157. WIRELESS_DEV=`ip link | grep wlp | awk '{print $2}' | sed 's/://' | sed '2!d'`
  158.  
  159. #
  160.             echo "Configuring 2nd wired NIC, (if any installed):  ${BCyan}$WIRED_DEV${Reset}"
  161.             echo "Configuring 2nd wireless NIC, (if any installed): ${BYellow}$WIRELESS_DEV ${Reset}"
  162.             echo
  163.             echo " Wired Automatic is DHCP, Wired Manual is Static IPs,"
  164.             echo
  165.             Connection_Type_list=("Wired Automatic" "Wired Manual"  "Wireless" "Configure Proxy" "Skip");
  166.             PS3="${BYellow}Select network connection type planning to use: ${Reset}"
  167.                 select CONNECTIONTYP in "${Connection_Type_list[@]}"
  168.                     do
  169.                         case "$REPLY" in
  170.                             1)
  171.                                     echo
  172.                                     echo "Starting Systemctl DHCP"
  173.                                     echo "systemctl start dhcpcd@${WIRED_DEV}.service"
  174.                                 break
  175.                                 ;;
  176.                             2)
  177.                                     echo
  178.                                     echo "Stopping Systemctl DHCP"
  179.                                     echo "systemctl stop dhcpcd@${WIRED_DEV}.service"
  180.                                     read -p "IP Address: " IP_ADDR
  181.                                     read -p "Subnet Mask: " SUBNET_MSK
  182.                                     read -p "Gateway: " GATEWAY
  183.                                     echo "Setting up Network"
  184.                                     ip link set ${WIRED_DEV} up         # Puts network card up
  185.                                     ip addr add ${IP_ADDR}/${SUBNET_MSK} dev ${WIRED_DEV} # Assigns IP address to NIC
  186.                                     ip route add default via ${GATEWAY}
  187.                                     echo
  188.                                     echo "Editing the /etc/resolve.conf"
  189.                                     echo
  190.                                     sleep 4
  191.                                     $EDITOR /etc/resolve.conf
  192.                                    
  193.                                 break
  194.                                 ;;
  195.                             3)
  196.                                     ip link set ${WIRELESS_DEV} up
  197.                                     wifi-menu ${WIRELESS_DEV}
  198.                                 break
  199.                                 ;;
  200.                             4)
  201.                                     read -p "Enter your proxy e.g. Protocol://address:port " OPTION
  202.                                     export http_proxy=$OPTION
  203.                                     export https_proxy=$OPTION
  204.                                     export ftp_proxy=$OPTION
  205.                                     echo "proxy = $OPTION" > ~/.curlrc
  206.                                     break
  207.                                 ;;
  208.                                
  209.                             5) 
  210.                                 break
  211.                             ;;
  212.                             *)
  213.                                 invaild_option
  214.                             ;;
  215.                         esac
  216.                     done
  217.  
  218. echo "You may test it out using the pings in the main menu"
  219. pause_function         
  220.                        
  221. }
  222.  
  223.  
  224.  
  225. ################################### Select Netctl example files and copy it
  226.  
  227. SelectNetctlex()
  228.  
  229. {
  230.    
  231.     PS3="${BYellow}Select netctl example file to copy or Quit: ${Reset}"
  232.     local netexfiles=(`ls $NETCTLEX | sed 's/\/.*$//' | uniq `);
  233.                         echo "Viewing netctl example files directory: ($NETCTLEX)"
  234.                         echo
  235.                         select NTCTLEXFILE in "${netexfiles[@]}" "Quit"
  236.                             do
  237.                             if [[ $NTCTLEXFILE == "Quit" ]]; then
  238.                                 echo "Quit"
  239.                                 return 1
  240.                         elif contains_element "$NTCTLEXFILE" "${netexfiles[@]}"
  241.                             then
  242.                                 echo "Copying $NETCTLEX/$NTCTLEXFILE  to $NETCTLDIR"
  243.                                 cp -v $NETCTLEX/$NTCTLEXFILE $NETCTLDIR
  244.                                 sleep 1
  245.                             break
  246.                         else
  247.                             invalid_option
  248.                         fi
  249.                         done
  250.  
  251.  
  252.  
  253. EditExampleFile
  254. }
  255. #############################################################################
  256. Shell() {
  257.    
  258.                         echo "You are entering the live filesystem's console"
  259.                         echo "Any changes made will only apply to the live"
  260.                         echo "filesystem. This may be useful for those who"
  261.                         echo "as to configure a network manually"
  262.                         echo
  263.                         echo "Usual Exit when finished."
  264.                         bash
  265.                        
  266. }
  267.    
  268. ################################################################################## 
  269.  
  270. UseNetctlEx()
  271. {
  272.     PS3="${BYellow}Select netctl file to use or Quit: ${Reset}"
  273.     local netctlfiles=(`ls $NETCTLDIR | sed 's/\/.*$//' | uniq `);
  274.                         echo "Viewing copied files directory: ($NETCTLDIR)"
  275.                         echo
  276.                         echo -e "${BRed}examples, hooks and interfaces are directories${Reset}"
  277.                         echo
  278.                         select NETCTLFILE in "${netctlfiles[@]}" "Quit"
  279.                             do
  280.                             if [[ $NETCTLFILE == "Quit" ]]; then
  281.                                 echo "Quit"
  282.                                 return 1
  283.                         elif [[ $NETCTLFILE == "examples" ]]; then
  284.                                 echo "That is a directory"
  285.                                 sleep 2
  286.                         elif [[ $NETCTLFILE == "hooks" ]]; then
  287.                                 echo "That is a directory"
  288.                                 sleep 2
  289.                         elif [[ $NETCTLFILE == "interfaces" ]]; then
  290.                                 echo "That is a directory"
  291.                                 sleep 2
  292.                         elif contains_element "$NETCTLFILE" "${netctlfiles[@]}"
  293.                             then
  294.                                 #   EditExampleFile
  295.                                     echo "starting ntctl $NETCTLDIR/$NETCTLFILE"
  296.                                     netctl start $NETCTLDIR/$NETCTLFILE
  297.                                 sleep 10
  298.                             break
  299.                         else
  300.                             invalid_option
  301.                         fi
  302.                         done
  303.  
  304.  
  305. }
  306.  
  307. ##############################################################################
  308.  
  309. EditExampleFile () # Allows editing of an Example file that was copied.
  310. {
  311.     while :
  312.     do
  313.         print_confirmedit
  314.        
  315.         read ConfirmNYN
  316.             case $ConfirmNYN in
  317.                 [Yy][Ee][Ss]|[Yy][Ee]|[Yy])
  318.                 echo "Editing $NETCTLDIR/$NTCTLEXFILE "
  319.                 sleep 1
  320.                 $EDITOR $NETCTLDIR/$NTCTLEXFILE
  321.                 break
  322.                 ;;
  323.                 [Nn][Oo]|[Nn])
  324.                 break # Returns to the Menu
  325.                
  326.                 ;;
  327.                 *)
  328.                     invalid_option
  329.                 ;;
  330.             esac
  331.     done       
  332.  
  333.        
  334.  
  335. }
  336. ################################################################################
  337.  
  338. EditMenu()
  339. {
  340.         while :
  341.         do
  342.                 print_title "**** Edit network files ****"
  343.                
  344.                 echo "Not Quite Implented"
  345.                 echo
  346.                 echo
  347.                 echo "1. Edit /etc/hosts"
  348.                 echo "2. Edit /etc/resolv.conf"
  349.                 echo "3. Edit /etc/hostname"
  350.                 echo "4. Edit /etc/netconfig"
  351.                 print_line
  352.                 echo "Q. Quit"
  353.                 echo
  354.                 print_askopt
  355.                 read NWANS
  356.                
  357.                         case $NWANS in
  358.                        
  359.                         1)
  360.                             $EDITOR /etc/hosts
  361.                         ;;
  362.                             2)
  363.                             $EDITOR /etc/resolv.conf
  364.                         ;;
  365.                             3)
  366.                             $EDITOR /etc/hostname
  367.                         ;;
  368.                             4)
  369.                             $EDITOR /etc/netconfig
  370.                         ;;
  371.                            
  372.                         Q|q)
  373.                             break
  374.                         ;;
  375.                        
  376.                         esac
  377.        
  378.        
  379.        
  380.        
  381.         done
  382.        
  383. }
  384.  
  385. ##################################################################################
  386.  
  387. MainNetworkMenu() {
  388.    
  389.     while :
  390.     do
  391.         print_title "*** Network Configuration ***"
  392.         echo    print_line
  393.     echo
  394.     print_askopt
  395.         read NETOPTS
  396.                     case $NETOPTS in
  397.                    
  398.                         1)
  399.                             echo "This will ping google.com 5 times and then pause"
  400.                             echo
  401.                             ping -c 5 www.google.com
  402.                             PINGEXIT=$?
  403.                             pause_function
  404.                                     if [[ "$PINGEXIT" -ne 0 ]]
  405.                                         then
  406.                                             PINGSTATUS="${BRed}Failed${Reset}"
  407.                                             NTASK1="${BRed}*${Reset}"
  408.                                            
  409.                                     else
  410.                                             PINGSTATUS="${BGreen}Passed${Reset}"
  411.                                             NTASK1="${BGreen}X${Reset}"
  412.                                     fi
  413.                             ;;
  414.                         2)
  415.                             echo
  416.                             echo "You can ping a router, another PC or Internet Server. "
  417.                             echo  "If option 1 failed, this may be useful to test on"
  418.                             echo  "on Static IPs"
  419.                             echo
  420.                             echo
  421.                             echo -en "${Bold}Type in the IP of a router or another PC to ping${Reset}: "
  422.                             read IP
  423.                             echo
  424.                             ping -c 5 $IP
  425.                             PINGSIPEXIT=$?
  426.                             pause_function
  427.                                     if [[ "$PINGSIPEXIT" -ne 0 ]]
  428.                                         then
  429.                                             PINGSTATIP="${BRed}Failed${Reset}"
  430.                                             NTASK2="${BRed}*${Reset}"
  431.                                            
  432.                                     else
  433.                                             PINGSTATIP="${BGreen}Passed${Reset}"
  434.                                             NTASK2="${BGreen}X${Reset}"
  435.                                     fi
  436.                             ;;     
  437.                            
  438.                         3)
  439.                            
  440.                             Config1NIC
  441.                         ;;
  442.                        
  443.                         4)
  444.                            
  445.                            
  446.                             Config2NIC
  447.                         ;;
  448.                        
  449.                         5)
  450.                             SelectNetctlex
  451.                    
  452.                         ;;
  453.                        
  454.                         6)
  455.                             while :
  456.                                 do
  457.                                     print_confirmedit "1st"
  458.                                     read EDYN
  459.                                         case $EDYN in
  460.                                        
  461.                                         Y|y|yes|YES)
  462.                                        
  463.                                         echo "Editing $NETCTLDIR/$NTCTLEXFILE "
  464.                                         sleep 1
  465.                                         $EDITOR $NETCTLDIR/$NTCTLEXFILE
  466.                                         UseNetctlEx
  467.                                         break
  468.                                         ;;
  469.                                         [Nn][Oo]|[Nn])
  470.                                         UseNetctlEx
  471.                                         break # Returns to the Menu
  472.                                         ;;
  473.                                         *)
  474.                                         invalid_option
  475.                                         ;;
  476.                                         esac
  477.                                 done
  478.                
  479.                         ;;
  480.                        
  481.                                                                        
  482.                         e|E)
  483.                             EditMenu
  484.                            
  485.                         ;;
  486.                        
  487.                         s|S)
  488.                        
  489.                             Shell
  490.                         ;;
  491.                        
  492.                         Q|q)
  493.                            
  494.                             return 1
  495.                            
  496.                         ;;
  497.                        
  498.                         *)
  499.                             invalid_option
  500.                         ;;
  501.    
  502.                         esac
  503.     done
  504.    
  505. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement