Extension by Raf
parent
502576d7ed
commit
7c8fbf0f41
|
@ -0,0 +1,59 @@
|
|||
#!/bin/bash
|
||||
|
||||
# get2_dhclient.sh - Bash Bunny extension to change from a DHCP server to a client.
|
||||
# This is needed when connected to macOS/OSX with Internet Sharing because
|
||||
# the host is the DHCP server and the Bash Bunny is the DHCP client.
|
||||
#
|
||||
# It also replaces the standard GET function so that TARGET_IP, TARGET_HOSTNAME
|
||||
# and HOST_IP work properly without having to modify the standard version. It
|
||||
# renames and uses the standard version for any other environment variables.
|
||||
#
|
||||
# Note that this must be sourced after get.sh so it is named "get2_dhclient.sh"
|
||||
# on the assumption that they are sourced in order by filename.
|
||||
#
|
||||
# This is free software released under the terms of the GPLv2+
|
||||
#
|
||||
# 20190321 raf <raf@raf.org>
|
||||
|
||||
function DHCLIENT() {
|
||||
|
||||
# Do nothing if GET isn't defined (get.sh hasn't been sourced yet)
|
||||
[ $(declare -f GET | /usr/bin/wc -l) = 0 ] && return
|
||||
|
||||
# Do nothing if we've already done it
|
||||
[ $(declare -f orig_GET | /usr/bin/wc -l) != 0 ] && return
|
||||
|
||||
# Stop the DHCP server if it is running
|
||||
/bin/systemctl status isc-dhcp-server && /bin/systemctl stop isc-dhcp-server
|
||||
|
||||
# Bring down the usb0 network interface
|
||||
/sbin/ifdown usb0
|
||||
|
||||
# Bring it up again as a DHCP client
|
||||
/sbin/dhclient usb0
|
||||
|
||||
# Rename the standard GET function before we replace it
|
||||
eval "$(echo "orig_GET()"; declare -f GET | tail -n +2)"
|
||||
export -f orig_GET
|
||||
|
||||
# Replace GET so that TARGET_IP, TARGET_HOSTNAME and HOST_IP work
|
||||
function GET() {
|
||||
case "$1" in
|
||||
"TARGET_IP")
|
||||
export TARGET_IP=$(awk '/option routers/ { tip = substr($3, 1, length($3)-1) } END { print tip }' /var/lib/dhcp/dhclient.leases)
|
||||
;;
|
||||
"TARGET_HOSTNAME")
|
||||
export TARGET_HOSTNAME=$(awk '/server-name/ { thn = substr($2, 2, length($2)-3) } END { print thn }' /var/lib/dhcp/dhclient.leases)
|
||||
;;
|
||||
"HOST_IP")
|
||||
export HOST_IP=$(awk '/fixed-address/ { hip = substr($2, 1, length($2)-1) } END { print hip }' /var/lib/dhcp/dhclient.leases)
|
||||
;;
|
||||
*)
|
||||
orig_GET "$1"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
}
|
||||
|
||||
export -f DHCLIENT
|
||||
|
Loading…
Reference in New Issue