-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathinstall.sh
More file actions
79 lines (65 loc) · 2.46 KB
/
Copy pathinstall.sh
File metadata and controls
79 lines (65 loc) · 2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/bin/bash
# Check if the correct number of arguments are provided
if [ "$#" -ne 3 ]; then
echo "Usage: $0 <router_ip> <username> <password>"
exit 1
fi
ROUTER_IP=$1
USERNAME=$2
PASSWORD=$3
# Define the packages to install
PACKAGES="luasec luasocket"
# Function to check SSH connectivity
check_ssh() {
sshpass -p $PASSWORD ssh -o StrictHostKeyChecking=no $USERNAME@$ROUTER_IP "echo SSH connection successful" > /dev/null 2>&1
}
# Function to check SSH connectivity with legacy SHA
check_ssh_legacy() {
sshpass -p $PASSWORD ssh -o StrictHostKeyChecking=no -o KexAlgorithms=+diffie-hellman-group1-sha1 -o HostKeyAlgorithms=+ssh-rsa $USERNAME@$ROUTER_IP "echo SSH connection successful" > /dev/null 2>&1
}
# Function to get the architecture of the device
get_arch() {
sshpass -p $PASSWORD ssh $USERNAME@$ROUTER_IP "uname -m"
}
# Function to check internet connectivity
check_internet() {
sshpass -p $PASSWORD ssh $USERNAME@$ROUTER_IP "ping -c 1 google.com > /dev/null 2>&1"
}
# Function to install packages using opkg
install_packages_opkg() {
for PACKAGE in $PACKAGES; do
sshpass -p $PASSWORD ssh $USERNAME@$ROUTER_IP "opkg update && opkg install $PACKAGE"
done
}
# Function to download and install packages manually
install_packages_manual() {
for PACKAGE in $PACKAGES; do
PACKAGE_URL="https://downloads.openwrt.org/releases/packages-19.07/$ARCH/packages/$PACKAGE.ipk"
wget $PACKAGE_URL -O /tmp/$PACKAGE.ipk
sshpass -p $PASSWORD scp /tmp/$PACKAGE.ipk $USERNAME@$ROUTER_IP:/tmp/
sshpass -p $PASSWORD ssh $USERNAME@$ROUTER_IP "opkg install /tmp/$PACKAGE.ipk && rm /tmp/$PACKAGE.ipk"
rm /tmp/$PACKAGE.ipk
done
}
# Check SSH connectivity
if ! check_ssh; then
if ! check_ssh_legacy; then
echo "SSH connection failed"
exit 1
fi
fi
# Get the architecture of the device
ARCH=$(get_arch)
# Check internet connectivity and install packages
if check_internet; then
install_packages_opkg
else
install_packages_manual
fi
# Download and install luci-app-ispapp
ISPAPP_URL="https://github.com/ispapp/ispapp-linux-client/releases/download/latest/luci-app-ispapp-$ARCH.ipk"
wget $ISPAPP_URL -O /tmp/luci-app-ispapp-$ARCH.ipk
sshpass -p $PASSWORD scp /tmp/luci-app-ispapp-$ARCH.ipk $USERNAME@$ROUTER_IP:/tmp/
sshpass -p $PASSWORD ssh $USERNAME@$ROUTER_IP "opkg install /tmp/luci-app-ispapp-$ARCH.ipk && rm /tmp/luci-app-ispapp-$ARCH.ipk"
rm /tmp/luci-app-ispapp-$ARCH.ipk
echo "Installation completed."