94 lines
2.6 KiB
Fish
94 lines
2.6 KiB
Fish
function temp_internet --description "Temporarily add or remove Internet access from a VM"
|
|
set -l action $argv[1]
|
|
set -l vmid $argv[2]
|
|
|
|
if test -z "$action"
|
|
echo "Usage: temp_internet {add|rm} <vmid> [ip/cidr] [gateway] [bridge] [model]"
|
|
return 1
|
|
end
|
|
|
|
if test -z "$vmid"
|
|
echo "Error: VMID is required."
|
|
return 1
|
|
end
|
|
|
|
switch $action
|
|
case add
|
|
set -l ip $argv[3]
|
|
set -l gateway $argv[4]
|
|
set -l bridge $argv[5]
|
|
set -l model $argv[6]
|
|
|
|
test -n "$ip"; or set ip $VM_TEMP_NET_IP
|
|
test -n "$gateway"; or set gateway $VM_TEMP_NET_GATEWAY
|
|
test -n "$bridge"; or set bridge $VM_TEMP_NET_BRIDGE
|
|
test -n "$model"; or set model $VM_TEMP_NET_MODEL
|
|
|
|
if test -z "$ip"
|
|
echo "Error: VM_TEMP_NET_IP is not configured."
|
|
return 1
|
|
end
|
|
|
|
if test -z "$gateway"
|
|
echo "Error: VM_TEMP_NET_GATEWAY is not configured."
|
|
return 1
|
|
end
|
|
|
|
if test -z "$bridge"
|
|
echo "Error: VM_TEMP_NET_BRIDGE is not configured."
|
|
return 1
|
|
end
|
|
|
|
if test -z "$model"
|
|
echo "Error: VM_TEMP_NET_MODEL is not configured."
|
|
return 1
|
|
end
|
|
|
|
set -l vmname (qm config $vmid | awk -F': ' '/^name:/ { print $2 }')
|
|
|
|
echo "Adding temporary Internet access to VM $vmid ($vmname)"
|
|
echo " IP: $ip"
|
|
echo " Gateway: $gateway"
|
|
echo " Bridge: $bridge"
|
|
echo " Model: $model"
|
|
|
|
read -l -P "Continue? [y/N]: " confirm
|
|
|
|
if test "$confirm" != y
|
|
echo "Aborted."
|
|
return 1
|
|
end
|
|
|
|
qm set $vmid \
|
|
--net1 "$model,bridge=$bridge" \
|
|
--ipconfig1 "ip=$ip,gw=$gateway"
|
|
|
|
or return
|
|
|
|
restartvm $vmid
|
|
|
|
case rm
|
|
set -l vmname (qm config $vmid | awk -F': ' '/^name:/ { print $2 }')
|
|
|
|
echo "Removing temporary Internet access from VM $vmid ($vmname)"
|
|
|
|
read -l -P "Continue? [y/N]: " confirm
|
|
|
|
if test "$confirm" != y
|
|
echo "Aborted."
|
|
return 1
|
|
end
|
|
|
|
qm set $vmid --delete net1
|
|
or return
|
|
|
|
qm set $vmid --delete ipconfig1
|
|
or return
|
|
|
|
restartvm $vmid
|
|
|
|
case '*'
|
|
echo "Usage: temp_internet {add|rm} <vmid> [ip/cidr] [gateway] [bridge] [model]"
|
|
return 1
|
|
end
|
|
end |