-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcspUkProd.sh
More file actions
executable file
·133 lines (114 loc) · 5.65 KB
/
Copy pathcspUkProd.sh
File metadata and controls
executable file
·133 lines (114 loc) · 5.65 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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#!/bin/bash
# Usage: ./cspUkProd.sh [media|core|proxy|proxy-core|web|micro|rabbit|mysql|mongo|transcript|asterisk|kamailio|all] [server_number] [tmux]
# Example: ./cspUkProd.sh media 2 (opens only BIFROST-MEDIA2)
# Define servers and their details as associative arrays
declare -A SERVERS
SERVERS[web1-csp-uk]="35.178.6.37 2222 hisham"
SERVERS[web2-csp-uk]="35.178.6.37 2223 hisham"
SERVERS[web3-csp-uk]="35.178.6.37 2260 hisham"
SERVERS[micro1-csp-uk]="35.178.6.37 2224 hisham"
SERVERS[micro2-csp-uk]="35.178.6.37 2225 hisham"
SERVERS[rabbit1-csp-uk]="35.178.6.37 2227 hisham"
SERVERS[rabbit2-csp-uk]="35.178.6.37 2228 hisham"
SERVERS[mysql1-csp-uk]="35.178.6.37 2232 hisham"
SERVERS[mysql2-csp-uk]="35.178.6.37 2233 hisham"
SERVERS[mysql3-csp-uk]="35.178.6.37 2234 hisham"
SERVERS[mongo1-csp-uk]="35.178.6.37 2229 hisham"
SERVERS[mongo2-csp-uk]="35.178.6.37 2230 hisham"
SERVERS[mongo3-csp-uk]="35.178.6.37 2231 hisham"
SERVERS[trans1-csp-uk]="18.135.241.76 22 hisham"
SERVERS[asterisk-csphones-uk]="18.132.154.229 22 hisham"
SERVERS[BIFROST-CORE1]="51.24.8.28 2222 admin"
SERVERS[BIFROST-CORE2]="51.24.8.28 2223 admin"
SERVERS[BIFROST-PROXY1]="51.24.8.28 2224 admin"
SERVERS[BIFROST-PROXY2]="51.24.8.28 2225 admin"
SERVERS[BIFROST-MEDIA1]="51.24.8.28 2226 admin"
SERVERS[BIFROST-MEDIA2]="51.24.8.28 2227 admin"
SERVERS[BIFROST-SIPTRACE]="51.24.8.28 2228 admin"
# for server in "${!SERVERS[@]}"; do
# echo "$server -> ${SERVERS[$server]}"
# done
# # Define port groups
declare -A SERVER_GROUPS
SERVER_GROUPS[media]="BIFROST-MEDIA1 BIFROST-MEDIA2"
SERVER_GROUPS[core]="BIFROST-CORE1 BIFROST-CORE2"
SERVER_GROUPS[proxy]="BIFROST-PROXY1 BIFROST-PROXY2"
SERVER_GROUPS[proxy-core]="BIFROST-CORE1 BIFROST-CORE2 BIFROST-PROXY1 BIFROST-PROXY2"
SERVER_GROUPS[kamailio]="BIFROST-CORE1 BIFROST-CORE2 BIFROST-PROXY1 BIFROST-PROXY2 BIFROST-MEDIA1 BIFROST-MEDIA2 BIFROST-SIPTRACE"
SERVER_GROUPS[web]="web1-csp-uk web2-csp-uk web3-csp-uk"
SERVER_GROUPS[micro]="micro1-csp-uk micro2-csp-uk"
SERVER_GROUPS[rabbit]="rabbit1-csp-uk rabbit2-csp-uk"
SERVER_GROUPS[mysql]="mysql1-csp-uk mysql2-csp-uk mysql3-csp-uk"
SERVER_GROUPS[mongo]="mongo1-csp-uk mongo2-csp-uk mongo3-csp-uk"
SERVER_GROUPS[transcript]="trans1-csp-uk"
SERVER_GROUPS[asterisk]="asterisk-csphones-uk"
SERVER_GROUPS[all]="${!SERVERS[@]}"
# Validate input
if [[ -z "${SERVER_GROUPS[$1]}" ]]; then
echo "Usage: $0 {media|core|proxy|proxy-core|web|micro|rabbit|mysql|mongo|transcript|asterisk|kamailio|all} [server_number] [tmux]"
echo "Example: $0 media 2 (opens only BIFROST-MEDIA2)"
exit 1
fi
# Get the list of servers for the specified group
SERVER_LIST=(${SERVER_GROUPS[$1]})
SERVER_NUMBER=$2
TMUX_MODE=$3
# If server number is specified and not "tmux", validate and filter the list
if [[ -n "$SERVER_NUMBER" && "$SERVER_NUMBER" != "tmux" ]]; then
# Check if server number is a valid integer
if ! [[ "$SERVER_NUMBER" =~ ^[0-9]+$ ]]; then
echo "Error: Server number must be a positive integer"
exit 1
fi
# Get the total count of servers in this group
SERVER_COUNT=${#SERVER_LIST[@]}
# Validate that the server number is within range
if [[ "$SERVER_NUMBER" -lt 1 || "$SERVER_NUMBER" -gt "$SERVER_COUNT" ]]; then
echo "Error: Invalid server number '$SERVER_NUMBER' for group '$1'"
echo "Valid range: 1-$SERVER_COUNT (available servers: ${SERVER_LIST[@]})"
exit 1
fi
# Get the specific server (arrays are 0-indexed, so subtract 1)
SELECTED_SERVER=${SERVER_LIST[$((SERVER_NUMBER - 1))]}
SERVER_LIST=($SELECTED_SERVER)
echo "Opening only server #$SERVER_NUMBER: $SELECTED_SERVER"
elif [[ "$SERVER_NUMBER" == "tmux" ]]; then
# If second arg is "tmux", set TMUX_MODE
TMUX_MODE="tmux"
fi
if [[ "$TMUX_MODE" == "tmux" ]]; then
# Start a new tmux session named "ssh_sessions"
tmux new-session -d -s ssh_sessions
echo "tmux session started"
for SERVER_NAME in "${SERVER_LIST[@]}"; do
read -r SERVER PORT USER <<<"${SERVERS[$SERVER_NAME]}"
echo "Opening SSH session to server name -> $SERVER_NAME -> SERVER And PORT ($SERVER:$PORT) USER -> $USER ... "
if [[ "$SERVER_NAME" == *"MEDIA"* ]]; then
echo media
tmux split-window -v "ssh -p $PORT $USER@$SERVER -t 'sudo su - cspuk && cd ~/CSIQ-Callcontroller && exec bash'" &
elif [[ "$SERVER_NAME" == *"web"* || "$SERVER_NAME" == *"micro"* || "$SERVER_NAME" == *"transcript"* ]]; then
tmux split-window -v "ssh -p $PORT $USER@$SERVER -t 'csiq && exec bash'" &
else
tmux split-window -v "ssh -p $PORT $USER@$SERVER; exec bash" &
fi
done
# Kill the initial pane (optional, if you don't need an extra pane)
tmux kill-pane -t 0
# tmux select-layout tiled # Arrange panes in a tiled layout
# Attach to the tmux session to view all SSH sessions at once
tmux set-window-option synchronize-panes on
tmux attach-session -t ssh_sessions
else
for SERVER_NAME in "${SERVER_LIST[@]}"; do
read -r SERVER PORT USER <<<"${SERVERS[$SERVER_NAME]}"
echo "Opening SSH session to server name -> $SERVER_NAME -> SERVER And PORT ($SERVER:$PORT) USER -> $USER ... "
if [[ "$SERVER_NAME" == *"MEDIA"* ]]; then
echo media
gnome-terminal --tab -- bash -c "ssh -p $PORT $USER@$SERVER -t 'sudo su - cspuk && cd ~/CSIQ-Callcontroller && exec bash'" &
elif [[ "$SERVER_NAME" == *"web"* || "$SERVER_NAME" == *"micro"* || "$SERVER_NAME" == *"transcript"* ]]; then
gnome-terminal --tab -- bash -c "ssh -p $PORT $USER@$SERVER -t 'csiq && exec bash'" &
else
gnome-terminal --tab -- bash -c "ssh -p $PORT $USER@$SERVER; exec bash" &
fi
done
fi