Skip to content

Commit d668787

Browse files
committed
edit option update
1 parent c106592 commit d668787

File tree

1 file changed

+127
-7
lines changed

1 file changed

+127
-7
lines changed

ssh-manager.sh

Lines changed: 127 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,20 @@ fi
4242

4343
}
4444

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+
4559
addNewServerIp(){
4660

4761
read -p "Enter the server IP or domain name: " ip
@@ -56,6 +70,27 @@ fi
5670

5771
}
5872

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+
5994
addNewServerPort(){
6095

6196

@@ -76,6 +111,27 @@ fi
76111

77112

78113

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
79135
}
80136

81137
addNewServerUser(){
@@ -92,6 +148,20 @@ fi
92148

93149

94150

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+
95165
}
96166

97167
createNewSSHCredentials(){
@@ -117,6 +187,54 @@ fi
117187

118188
menu
119189

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+
120238
}
121239

122240
listSSHCredentials(){
@@ -250,18 +368,20 @@ fi
250368
printf "%s${info}===========================${reset}\n"
251369
printf "1. Add new SSH connection \n"
252370
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] : "
257376
read -p "" choice
258377

259378
case $choice in
260379
1) createNewSSHCredentials;;
261380
2) connectToSSHServer;;
262-
3) listSSHCredentials;;
263-
4) deleteSSHServer;;
264-
5) exit;;
381+
3) editSSHConnection;;
382+
4) listSSHCredentials;;
383+
5) deleteSSHServer;;
384+
6) exit;;
265385
*) printf "%s${warning}Invalid choice${reset}\n"; menu;;
266386
esac
267387

0 commit comments

Comments
 (0)