Innovenergy_trunk/firmware/update_all_installations.sh

634 lines
12 KiB
Bash
Executable File

#!/bin/bash
# Handle Ctrl+C to ensure a clean exit
trap "echo -e '\nScript interrupted by user. Exiting...'; kill 0; exit 1" SIGINT
username='root'
root_password='salidomo'
set -e
venus_release_file_path="./Venus_Release/VenusReleaseFiles"
cerbo_release_file_path="./Cerbo_Release/CerboReleaseFiles"
venus_ip_addresses=("10.2.4.155" "10.2.3.178" "10.2.3.164" "10.2.4.114" "10.2.3.133" "10.2.2.72" "10.2.2.11" "10.2.2.128" "10.2.2.100" "10.2.2.243")
#
#venus_ip_addresses=(
# "10.2.1.35" "10.2.0.104" "10.2.1.159" "10.2.0.224" "10.2.0.155" "10.2.0.209" "10.2.0.227" "10.2.0.211"
# "10.2.1.134" "10.2.0.130" "10.2.1.169" "10.2.0.105" "10.2.0.220" "10.2.1.124" "10.2.1.2" "10.2.1.158"
# "10.2.0.195" "10.2.1.171" "10.2.0.225" "10.2.1.53" "10.2.0.107" "10.2.0.153" "10.2.1.106" "10.2.1.117"
# "10.2.0.145" "10.2.0.110" "10.2.1.177" "10.2.1.247" "10.2.0.101" "10.2.0.108" "10.2.1.120" "10.2.1.160"
# "10.2.0.98" "10.2.0.94" "10.2.1.173" "10.2.0.113" "10.2.0.150" "10.2.0.233" "10.2.1.162" "10.2.1.138"
# "10.2.1.165" "10.2.1.163" "10.2.1.32" "10.2.1.110" "10.2.0.103" "10.2.1.113" "10.2.0.216" "10.2.0.184"
# "10.2.0.191" "10.2.1.60" "10.2.1.219" "10.2.0.214" "10.2.1.83" "10.2.1.39" "10.2.0.194" "10.2.1.81"
# "10.2.1.125" "10.2.0.154" "10.2.0.196" "10.2.0.99" "10.2.1.130" "10.2.1.33" "10.2.0.249" "10.2.0.133"
# "10.2.1.118" "10.2.0.138" "10.2.0.144" "10.2.0.141" "10.2.0.188" "10.2.1.74" "10.2.1.141" "10.2.1.142"
# "10.2.0.193" "10.2.1.145" "10.2.1.15" "10.2.1.70" "10.2.0.135" "10.2.0.247" "10.2.0.134" "10.2.1.21"
# "10.2.0.131" "10.2.1.1" "10.2.1.73" "10.2.0.243" "10.2.1.19" "10.2.1.166" "10.2.0.192" "10.2.1.12"
# "10.2.2.188" "10.2.0.158" "10.2.1.146" "10.2.1.27" "10.2.0.202" "10.2.0.157" "10.2.1.55" "10.2.1.16"
# "10.2.1.28" "10.2.4.242" "10.2.0.254" "10.2.1.128" "10.2.1.58" "10.2.1.156" "10.2.1.137" "10.2.1.135"
# "10.2.1.24" "10.2.0.128" "10.2.1.90" "10.2.1.153" "10.2.1.93" "10.2.1.111" "10.2.1.71" "10.2.1.37"
# "10.2.0.127" "10.2.0.126" "10.2.1.22" "10.2.1.91" "10.2.1.123" "10.2.1.220" "10.2.1.114" "10.2.1.41"
# "10.2.0.125" "10.2.1.62" "10.2.0.161" "10.2.1.121" "10.2.1.10" "10.2.0.112" "10.2.0.111" "10.2.0.218"
# "10.2.1.49" "10.2.0.230" "10.2.1.170" "10.2.0.114" "10.2.0.140" "10.2.4.241" "10.2.1.107" "10.2.0.185"
# "10.2.0.124" "10.2.1.85" "10.2.0.123" "10.2.1.23" "10.2.1.44" "10.2.1.172" "10.2.1.129" "10.2.1.14"
# "10.2.1.59" "10.2.1.56" "10.2.1.149" "10.2.1.140" "10.2.1.116" "10.2.1.57" "10.2.1.26" "10.2.0.210"
# "10.2.0.237" "10.2.1.47" "10.2.1.127" "10.2.0.199" "10.2.0.252" "10.2.1.119" "10.2.0.122" "10.2.0.251"
# "10.2.1.7" "10.2.1.45" "10.2.1.157" "10.2.1.139" "10.2.0.119" "10.2.0.250" "10.2.1.148" "10.2.1.92"
# "10.2.0.245" "10.2.0.246" "10.2.1.80" "10.2.0.204" "10.2.0.203" "10.2.0.205" "10.2.1.78" "10.2.4.210"
# "10.2.0.222" "10.2.1.36" "10.2.1.3" "10.2.0.244" "10.2.1.176" "10.2.0.242" "10.2.1.30" "10.2.1.61"
# "10.2.1.168" "10.2.0.215" "10.2.1.76" "10.2.1.43" "10.2.0.200" "10.2.0.115" "10.2.1.115" "10.2.0.238"
# "10.2.0.189" "10.2.0.160" "10.2.0.149" "10.2.1.161" "10.2.1.101" "10.2.1.40" "10.2.0.229" "10.2.1.52"
# "10.2.0.239" "10.2.0.132" "10.2.0.162" "10.2.1.25" "10.2.0.118" "10.2.1.151" "10.2.0.190" "10.2.1.108"
# "10.2.0.219" "10.2.1.100" "10.2.1.109"
#)
#cerbo_ip_addresses=("10.2.1.150")
#
cerbo_ip_addresses=(
10.2.5.5
10.2.4.98
10.2.4.97
10.2.4.96
10.2.4.95
10.2.4.94
10.2.4.92
10.2.4.91
10.2.4.90
10.2.4.9
10.2.4.88
10.2.4.87
10.2.4.84
10.2.4.83
10.2.4.82
10.2.4.81
10.2.4.80
10.2.4.78
10.2.4.77
10.2.4.75
10.2.4.73
10.2.4.71
10.2.4.70
10.2.4.69
10.2.4.68
10.2.4.66
10.2.4.63
10.2.4.61
10.2.4.60
10.2.4.59
10.2.4.57
10.2.4.55
10.2.4.51
10.2.4.48
10.2.4.47
10.2.4.45
10.2.4.44
10.2.4.42
10.2.4.4
10.2.4.37
10.2.4.34
10.2.4.31
10.2.4.30
10.2.4.28
10.2.4.27
10.2.4.25
10.2.4.24
10.2.4.24
10.2.4.232
10.2.4.223
10.2.4.213
10.2.4.206
10.2.4.205
10.2.4.201
10.2.4.20
10.2.4.193
10.2.4.191
10.2.4.190
10.2.4.188
10.2.4.183
10.2.4.181
10.2.4.180
10.2.4.179
10.2.4.178
10.2.4.177
10.2.4.175
10.2.4.17
10.2.4.169
10.2.4.166
10.2.4.160
10.2.4.158
10.2.4.157
10.2.4.155
10.2.4.15
10.2.4.149
10.2.4.148
10.2.4.146
10.2.4.143
10.2.4.141
10.2.4.140
10.2.4.14
10.2.4.137
10.2.4.136
10.2.4.135
10.2.4.134
10.2.4.129
10.2.4.127
10.2.4.126
10.2.4.125
10.2.4.123
10.2.4.122
10.2.4.120
10.2.4.12
10.2.4.119
10.2.4.118
10.2.4.116
10.2.4.115
10.2.4.114
10.2.4.111
10.2.4.11
10.2.4.109
10.2.4.108
10.2.4.103
10.2.4.102
10.2.4.100
10.2.4.10
10.2.3.98
10.2.3.97
10.2.3.91
10.2.3.90
10.2.3.9
10.2.3.83
10.2.3.8
10.2.3.79
10.2.3.76
10.2.3.75
10.2.3.74
10.2.3.73
10.2.3.72
10.2.3.70
10.2.3.7
10.2.3.69
10.2.3.68
10.2.3.67
10.2.3.66
10.2.3.64
10.2.3.61
10.2.3.6
10.2.3.54
10.2.3.51
10.2.3.5
10.2.3.48
10.2.3.46
10.2.3.45
10.2.3.44
10.2.3.42
10.2.3.41
10.2.3.40
10.2.3.4
10.2.3.38
10.2.3.37
10.2.3.36
10.2.3.35
10.2.3.34
10.2.3.30
10.2.3.3
10.2.3.28
10.2.3.26
10.2.3.253
10.2.3.252
10.2.3.251
10.2.3.249
10.2.3.247
10.2.3.244
10.2.3.243
10.2.3.241
10.2.3.240
10.2.3.24
10.2.3.238
10.2.3.237
10.2.3.236
10.2.3.231
10.2.3.23
10.2.3.226
10.2.3.225
10.2.3.224
10.2.3.223
10.2.3.222
10.2.3.221
10.2.3.220
10.2.3.218
10.2.3.216
10.2.3.215
10.2.3.214
10.2.3.21
10.2.3.209
10.2.3.205
10.2.3.203
10.2.3.202
10.2.3.201
10.2.3.200
10.2.3.2
10.2.3.198
10.2.3.197
10.2.3.195
10.2.3.194
10.2.3.190
10.2.3.19
10.2.3.188
10.2.3.186
10.2.3.185
10.2.3.184
10.2.3.183
10.2.3.182
10.2.3.181
10.2.3.180
10.2.3.18
10.2.3.178
10.2.3.177
10.2.3.176
10.2.3.175
10.2.3.174
10.2.3.173
10.2.3.170
10.2.3.169
10.2.3.168
10.2.3.166
10.2.3.165
10.2.3.164
10.2.3.162
10.2.3.161
10.2.3.160
10.2.3.159
10.2.3.158
10.2.3.157
10.2.3.156
10.2.3.155
10.2.3.154
10.2.3.152
10.2.3.150
10.2.3.15
10.2.3.148
10.2.3.147
10.2.3.146
10.2.3.144
10.2.3.143
10.2.3.141
10.2.3.14
10.2.3.135
10.2.3.134
10.2.3.133
10.2.3.132
10.2.3.131
10.2.3.130
10.2.3.13
10.2.3.129
10.2.3.126
10.2.3.125
10.2.3.124
10.2.3.122
10.2.3.12
10.2.3.119
10.2.3.118
10.2.3.117
10.2.3.116
10.2.3.113
10.2.3.112
10.2.3.111
10.2.3.108
10.2.3.107
10.2.3.102
10.2.3.10
10.2.3.1
10.2.2.99
10.2.2.98
10.2.2.96
10.2.2.91
10.2.2.90
10.2.2.89
10.2.2.87
10.2.2.86
10.2.2.85
10.2.2.83
10.2.2.82
10.2.2.81
10.2.2.8
10.2.2.79
10.2.2.78
10.2.2.77
10.2.2.76
10.2.2.74
10.2.2.73
10.2.2.72
10.2.2.71
10.2.2.70
10.2.2.69
10.2.2.66
10.2.2.65
10.2.2.64
10.2.2.61
10.2.2.59
10.2.2.58
10.2.2.57
10.2.2.56
10.2.2.52
10.2.2.5
10.2.2.47
10.2.2.46
10.2.2.45
10.2.2.44
10.2.2.43
10.2.2.42
10.2.2.39
10.2.2.38
10.2.2.36
10.2.2.35
10.2.2.34
10.2.2.33
10.2.2.32
10.2.2.30
10.2.2.3
10.2.2.29
10.2.2.26
10.2.2.254
10.2.2.250
10.2.2.25
10.2.2.249
10.2.2.248
10.2.2.245
10.2.2.244
10.2.2.243
10.2.2.242
10.2.2.240
10.2.2.24
10.2.2.239
10.2.2.238
10.2.2.235
10.2.2.234
10.2.2.233
10.2.2.232
10.2.2.231
10.2.2.23
10.2.2.229
10.2.2.228
10.2.2.227
10.2.2.225
10.2.2.224
10.2.2.223
10.2.2.222
10.2.2.221
10.2.2.220
10.2.2.22
10.2.2.219
10.2.2.216
10.2.2.215
10.2.2.214
10.2.2.213
10.2.2.212
10.2.2.211
10.2.2.21
10.2.2.208
10.2.2.207
10.2.2.205
10.2.2.204
10.2.2.203
10.2.2.202
10.2.2.201
10.2.2.2
10.2.2.198
10.2.2.197
10.2.2.196
10.2.2.194
10.2.2.193
10.2.2.192
10.2.2.190
10.2.2.19
10.2.2.189
10.2.2.184
10.2.2.183
10.2.2.182
10.2.2.181
10.2.2.180
10.2.2.178
10.2.2.176
10.2.2.174
10.2.2.173
10.2.2.172
10.2.2.171
10.2.2.170
10.2.2.169
10.2.2.166
10.2.2.164
10.2.2.163
10.2.2.162
10.2.2.161
10.2.2.16
10.2.2.159
10.2.2.158
10.2.2.156
10.2.2.153
10.2.2.152
10.2.2.151
10.2.2.150
10.2.2.15
10.2.2.146
10.2.2.145
10.2.2.144
10.2.2.143
10.2.2.142
10.2.2.141
10.2.2.140
10.2.2.14
10.2.2.137
10.2.2.133
10.2.2.131
10.2.2.13
10.2.2.129
10.2.2.128
10.2.2.127
10.2.2.126
10.2.2.124
10.2.2.122
10.2.2.121
10.2.2.120
10.2.2.12
10.2.2.118
10.2.2.117
10.2.2.116
10.2.2.115
10.2.2.114
10.2.2.111
10.2.2.11
10.2.2.109
10.2.2.107
10.2.2.105
10.2.2.104
10.2.2.103
10.2.2.101
10.2.2.100
10.2.2.10
10.2.2.1
10.2.1.86
10.2.1.79
10.2.1.254
10.2.1.253
10.2.1.252
10.2.1.251
10.2.1.244
10.2.1.243
10.2.1.240
10.2.1.237
10.2.1.234
10.2.1.231
10.2.1.230
10.2.1.229
10.2.1.228
10.2.1.227
10.2.1.226
10.2.1.225
10.2.1.224
10.2.1.223
10.2.1.216
10.2.1.215
10.2.1.213
10.2.1.212
10.2.1.211
10.2.1.209
10.2.1.208
10.2.1.207
10.2.1.206
10.2.1.205
10.2.1.204
10.2.1.203
10.2.1.200
10.2.1.199
10.2.1.196
10.2.1.195
10.2.1.194
10.2.1.193
10.2.1.192
10.2.1.191
10.2.1.190
10.2.1.189
10.2.1.187
10.2.1.186
10.2.1.185
10.2.1.180
10.2.1.179
10.2.1.150
10.2.1.133
10.2.1.104
10.2.0.179
)
deploy() {
local device_type=$1
local ip_list=("${!2}")
local release_file_path=$3
echo -e "\n============================ Deploying to $device_type ============================\n"
for ip_address in "${ip_list[@]}"; do
echo "Processing $ip_address for $device_type..."
# Check if SSH is reachable within 60 seconds
if ! timeout 60 ssh -o ConnectTimeout=10 -o StrictHostKeyChecking=no "$username@$ip_address" "echo 'SSH connection successful'" &>/dev/null; then
echo "Skipping $ip_address: SSH connection failed or timed out."
continue
fi
echo "SSH connection successful: $ip_address"
# Stop battery service if changing battery-related files
if ssh -o StrictHostKeyChecking=no "$username@$ip_address" "svc -d /service/dbus-fzsonick-48tl.*"; then
echo "Stopped battery service on $ip_address"
else
echo "Warning: Failed to stop battery service on $ip_address"
fi
echo "SSH connection successful: $ip_address"
# Stop aggregator service if changing aggregator-related files
if ssh -o StrictHostKeyChecking=no "$username@$ip_address" "svc -d /service/aggregator"; then
echo "Stopped aggregator service on $ip_address"
else
echo "Warning: Failed to stop aggregator service on $ip_address"
fi
# Copy files
if scp -o ConnectTimeout=10 "$release_file_path/dbus-fzsonick-48tl/dbus-fzsonick-48tl.py" "root@$ip_address:/opt/victronenergy/dbus-fzsonick-48tl"; then
echo "Copied file to /opt on $ip_address"
else
echo "Warning: Failed to copy file to /opt on $ip_address"
fi
if scp -o ConnectTimeout=10 "$release_file_path/dbus-fzsonick-48tl/dbus-fzsonick-48tl.py" "root@$ip_address:/data/dbus-fzsonick-48tl"; then
echo "Copied file to /data on $ip_address"
else
echo "Warning: Failed to copy file to /data on $ip_address"
fi
# Copy files
if scp -o ConnectTimeout=10 "$release_file_path/dbus-fzsonick-48tl/aggregator.py" "root@$ip_address:/opt/victronenergy/dbus-fzsonick-48tl"; then
echo "Copied file to /opt on $ip_address"
else
echo "Warning: Failed to copy file to /opt on $ip_address"
fi
if scp -o ConnectTimeout=10 "$release_file_path/dbus-fzsonick-48tl/aggregator.py" "root@$ip_address:/data/dbus-fzsonick-48tl"; then
echo "Copied file to /data on $ip_address"
else
echo "Warning: Failed to copy file to /data on $ip_address"
fi
# Start battery service
if ssh -o StrictHostKeyChecking=no "$username@$ip_address" "svc -u /service/dbus-fzsonick-48tl.*"; then
echo "Started battery service on $ip_address"
else
echo "Warning: Failed to start battery service on $ip_address"
fi
# Start aggregator service
if ssh -o StrictHostKeyChecking=no "$username@$ip_address" "svc -u /service/aggregator"; then
echo "Started aggregator service on $ip_address"
else
echo "Warning: Failed to start aggregator service on $ip_address"
fi
echo "Deployment completed for $ip_address ($device_type)"
done
echo -e "\n============================ Finished deploying to $device_type ============================\n"
}
# Prompt user for deployment type
echo "Select deployment type:"
echo "1) Deploy to Venus devices"
echo "2) Deploy to Cerbo devices"
echo "3) Deploy to both Venus and Cerbo devices"
read -p "Enter your choice (1/2/3): " choice
case $choice in
1)
deploy "Venus" venus_ip_addresses[@] "$venus_release_file_path"
;;
2)
deploy "Cerbo" cerbo_ip_addresses[@] "$cerbo_release_file_path"
;;
3)
deploy "Venus" venus_ip_addresses[@] "$venus_release_file_path"
deploy "Cerbo" cerbo_ip_addresses[@] "$cerbo_release_file_path"
;;
*)
echo "Invalid choice. Exiting..."
exit 1
;;
esac
echo -e "\n============================ All Deployments Completed ============================\n"