|
42 | 42 |
|
43 | 43 | }
|
44 | 44 |
|
| 45 | +editServer(){ |
| 46 | + |
| 47 | + printf "Current name is: %s \n " "$name" |
| 48 | + read -p "Enter the new name or leave blank to use current name : " newName |
| 49 | + printf "\n" |
| 50 | + |
| 51 | + if [ -z "$newName" ] |
| 52 | + then |
| 53 | + name=$name |
| 54 | + else |
| 55 | + name=$newName |
| 56 | + fi |
| 57 | +} |
| 58 | + |
45 | 59 | addNewServerIp(){
|
46 | 60 |
|
47 | 61 | read -p "Enter the server IP or domain name: " ip
|
|
56 | 70 |
|
57 | 71 | }
|
58 | 72 |
|
| 73 | +editServerIp(){ |
| 74 | + |
| 75 | + printf "Current IP is: %s \n" "$ip" |
| 76 | + read -p "Enter the new IP or domain name or leave blank to use current IP : " newIp |
| 77 | + printf "\n" |
| 78 | + if [ -z "$newIp" ] |
| 79 | + then |
| 80 | + ip=$ip |
| 81 | + else |
| 82 | + |
| 83 | + if ! [[ "$newIp" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]] && ! [[ "$newIp" =~ ^([a-zA-Z0-9]+(-[a-zA-Z0-9]+)*\.)+[a-zA-Z]{2,}$ ]] |
| 84 | + then |
| 85 | + printf "%s${warning}Invalid IP or domain name${reset}\n" |
| 86 | + editServerIp $ip |
| 87 | + else |
| 88 | + ip=$newIp |
| 89 | + fi |
| 90 | + fi |
| 91 | + |
| 92 | +} |
| 93 | + |
59 | 94 | addNewServerPort(){
|
60 | 95 |
|
61 | 96 |
|
|
76 | 111 |
|
77 | 112 |
|
78 | 113 |
|
| 114 | +} |
| 115 | + |
| 116 | +editServerPort(){ |
| 117 | + |
| 118 | + printf "Current port is: %s \n " "$port" |
| 119 | + read -p "Enter the new port number or leave blank to use current port : " newPort |
| 120 | + printf "\n" |
| 121 | + |
| 122 | + if [ -z "$newPort" ] |
| 123 | + then |
| 124 | + port=$port |
| 125 | + else |
| 126 | + |
| 127 | + if ! [[ "$newPort" =~ ^[0-9]+$ ]] || [ "$newPort" -gt 65535 ] || [ "$newPort" -lt 1 ] |
| 128 | + then |
| 129 | + printf "%s${warning}Invalid port number${reset}\n" |
| 130 | + editServerPort $port |
| 131 | + else |
| 132 | + port=$newPort |
| 133 | + fi |
| 134 | + fi |
79 | 135 | }
|
80 | 136 |
|
81 | 137 | addNewServerUser(){
|
|
92 | 148 |
|
93 | 149 |
|
94 | 150 |
|
| 151 | + } |
| 152 | + |
| 153 | + editServerUser(){ |
| 154 | + |
| 155 | + printf "Current user is %s \n " "$user" |
| 156 | + read -p "Enter the new username or leave blank to use current name : " newUser |
| 157 | + |
| 158 | + if [ -z "$newUser" ] |
| 159 | + then |
| 160 | + user=$user |
| 161 | + else |
| 162 | + user=$newUser |
| 163 | + fi |
| 164 | + |
95 | 165 | }
|
96 | 166 |
|
97 | 167 | createNewSSHCredentials(){
|
|
117 | 187 |
|
118 | 188 | menu
|
119 | 189 |
|
| 190 | + } |
| 191 | + |
| 192 | + editSSHConnection(){ |
| 193 | + |
| 194 | + fileEmptyCheck |
| 195 | + printf "%s${info}===========================${reset}\n" |
| 196 | + echo -e "${info} Saved SSH Connections ${reset}" |
| 197 | + printf "%s${info}===========================${reset}\n" |
| 198 | + #Now to use awk to list the servers in a nice format 1 , 2 , 3 etc |
| 199 | + printf "%s${info}# Name IP/Host \tPort Username${reset}\n" |
| 200 | + awk -F, '{print NR " " $1 " " $2 " " $3 " " $4}' "$cfg_file_name" | column -t # -t is used to align the columns, using awk is always awkward .... but it works |
| 201 | + |
| 202 | + printf "%s${warning}Enter the number of the SSH connection you want to edit or enter 0 to cancel : ${reset}" |
| 203 | + read -p "" serverNumber |
| 204 | + |
| 205 | + #Check if the user wants to cancel |
| 206 | + if [ "$serverNumber" -eq 0 ] |
| 207 | + then |
| 208 | + menu |
| 209 | + fi |
| 210 | + |
| 211 | + if [ -z "$serverNumber" ] || ! [[ "$serverNumber" =~ ^[0-9]+$ ]] || [ "$serverNumber" -gt "$(wc -l < "$cfg_file_name")" ] || [ "$serverNumber" -lt 1 ] |
| 212 | + then |
| 213 | + printf "%s${warning}Invalid selection${reset}\n" |
| 214 | + editSSHConnection # You have to love reursive functions |
| 215 | + fi |
| 216 | + |
| 217 | + |
| 218 | + #Now to use awk to filter the server number and get the details name,ip,host etc |
| 219 | + name=$(awk -F, -v serverNumber="$serverNumber" 'NR==serverNumber {print $1}' "$cfg_file_name") |
| 220 | + ip=$(awk -F, -v serverNumber="$serverNumber" 'NR==serverNumber {print $2}' "$cfg_file_name") |
| 221 | + port=$(awk -F, -v serverNumber="$serverNumber" 'NR==serverNumber {print $3}' "$cfg_file_name") |
| 222 | + user=$(awk -F, -v serverNumber="$serverNumber" 'NR==serverNumber {print $4}' "$cfg_file_name") |
| 223 | + |
| 224 | + editServer |
| 225 | + editServerIp |
| 226 | + editServerPort |
| 227 | + editServerUser |
| 228 | + |
| 229 | + #Now to replace the selected lines info with the updated info to the file |
| 230 | + |
| 231 | + sed -i "${serverNumber}s/.*/$name,$ip,$port,$user/" "$cfg_file_name" |
| 232 | + printf "%s${success}SSH Connection has been edited${reset}\n" |
| 233 | + menu |
| 234 | + |
| 235 | + |
| 236 | + |
| 237 | + |
120 | 238 | }
|
121 | 239 |
|
122 | 240 | listSSHCredentials(){
|
|
250 | 368 | printf "%s${info}===========================${reset}\n"
|
251 | 369 | printf "1. Add new SSH connection \n"
|
252 | 370 | printf "2. Connect to a saved SSH connection \n"
|
253 |
| - printf "3. List Saved SSH connections \n" |
254 |
| - printf "%s${warning}4. Delete a saved SSH connection ${reset}\n" |
255 |
| - printf "5. Exit\n" |
256 |
| - printf "Enter your choice [1-5] : " |
| 371 | + printf "3. Edit a saved SSH connection \n" |
| 372 | + printf "4. List Saved SSH connections \n" |
| 373 | + printf "%s${warning}5. Delete a saved SSH connection ${reset}\n" |
| 374 | + printf "6. Exit\n" |
| 375 | + printf "Enter your choice [1-6] : " |
257 | 376 | read -p "" choice
|
258 | 377 |
|
259 | 378 | case $choice in
|
260 | 379 | 1) createNewSSHCredentials;;
|
261 | 380 | 2) connectToSSHServer;;
|
262 |
| - 3) listSSHCredentials;; |
263 |
| - 4) deleteSSHServer;; |
264 |
| - 5) exit;; |
| 381 | + 3) editSSHConnection;; |
| 382 | + 4) listSSHCredentials;; |
| 383 | + 5) deleteSSHServer;; |
| 384 | + 6) exit;; |
265 | 385 | *) printf "%s${warning}Invalid choice${reset}\n"; menu;;
|
266 | 386 | esac
|
267 | 387 |
|
|
0 commit comments