[ Level 2 ] Connect pool for ssh.
If you want to use the concept "connection pool" for ssh, you could try the following sample.
Wish this helps.
regards,
Stanley Huang
#!/bin/bash # # You might need to modify sshd_config with the following attributes: # # MaxStartup 200 # MaxSessions 200 # [ "$1" == "-d" ] && set -vx && shift control_master="$1" && [ "$control_master" != "false" ] && control_master=true username="$2" && [ -z $username ] && username=stanley remote_host="$3" && [ -z $remote_host ] && remote_host=127.0.0.1 cmd1="$4"&& [ -z $cmd1 ] && cmd1=ls control_master_option="" client_cmd="/tmp/a.sh" buildControlMaster() { if $control_master then ssh -N -o "ControlMaster auto" -o "ControlPath ~/.ssh/master-$username@$remote_host" $username@$remote_host & fi } createClientCmd() { mkdir -p /tmp/add rm /tmp/add/* $client_cmd if $control_master then control_master_option="-o \"ControlMaster auto\" -o \"ControlPath ~/.ssh/master-$username@$remote_host\"" fi echo "ssh $control_master_option $username@$remote_host $cmd1 >/tmp/add/\$\$.txt 2>&1" >> $client_cmd } test() { for i in `seq 1 100` do bash $client_cmd & done wait ## wait for all child process finished! } buildControlMaster createClientCmd time test
$ ./sshControlMaster.sh true ## if open fail, ssh would create isolate session. channel 67: open failed: administratively prohibited: open failed channel 69: open failed: administratively prohibited: open failed channel 86: open failed: administratively prohibited: open failed channel 88: open failed: administratively prohibited: open failed channel 72: open failed: administratively prohibited: open failed channel 18: open failed: administratively prohibited: open failed ... channel 37: open failed: administratively prohibited: open failed channel 1: open failed: administratively prohibited: open failed channel 5: open failed: administratively prohibited: open failed channel 10: open failed: administratively prohibited: open failed channel 6: open failed: administratively prohibited: open failed channel 11: open failed: administratively prohibited: open failed real 0m5.176s user 0m0.424s sys 0m0.232s $ ./sshControlMaster.sh false ## always create isolate session. real 0m8.926s user 0m0.544s sys 0m0.288s $ You will still get the performance enhancement even though some open session fail and create isolate one.
Wish this helps.
regards,
Stanley Huang
Comments
Post a Comment