![]()
#!/usr/bin/perl -w
![]()
#Batch Create SecureCRT Session
![]()
#write by luox
![]()
#2010-04-11
![]()
#MAIL:fine102#163.com
![]()
#OICQ:79810841
use strict;
![]()
use Getopt::Long;
![]()
use Cwd;
![]()
use vars qw/$port $user $password/;
my $PROGRAM_NAME = "cre_sess.pl";
![]()
my $VERSION = "0.1";
my $type = "lan";
![]()
my $port = "9922";
![]()
my $user = "root";
![]()
my $password = "ea4324f911e4210ab76cf50276d54725";
![]()
my $list_file = "list";
![]()
my $help;
![]()
my $debug = 0;
![]()
my $status = GetOptions (
![]()
"type=s" => \$type,
![]()
"port=i" => \$port,
![]()
"user=s" => \$user,
![]()
"password=s" => \$password,
![]()
"list_file=s" => \$list_file,
![]()
"help" => \$help,
![]()
"debug=i" => \$debug,
![]()
);
#conver decval to hexval with $port
![]()
$port = &convert_dec($port);
![]()
my $local = cwd;
![]()
chdir $local;
![]()
print "DEBUG MODE\n" if $debug;
![]()
print "\$type is: " . $type . "\n" if $debug;
![]()
print "\$port is: " . $port . "\n" if $debug;
![]()
print "\$user is: " . $user . "\n" if $debug;
![]()
print "\$password is: " . $password . "\n" if $debug;
![]()
print "\$list_file is: " . $list_file . "\n" if $debug;
if ($status == 0) {
![]()
&print_help;
![]()
exit 0;
![]()
}
if ($help) {
![]()
&print_help;
![]()
exit 0;
![]()
}
my $session_path = "$local/session_dir";
![]()
my $contents = `cat $local/source.ini`;
![]()
my $list = `cat $list_file`;
![]()
$list =~ s/^#.*\n //g;
![]()
my @list = split(/\n/,$list);
![]()
print $contents . "\n" if $debug;
if ( ! -d $session_path ) {
![]()
mkdir $session_path;
![]()
print "$session_path not found,now mkdir \n";
![]()
}
foreach my $line (@list) {
![]()
print $line . "\n" if $debug;
my $file_name = "";
![]()
my $hostname = "";
![]()
my $lan_ip = "";
![]()
my $wan_ip = "";
if ( $line =~ m{hostname:(\w+\d+)}i ) {
![]()
$hostname = $1;
![]()
print $hostname . "\n" if $debug;
![]()
last if $debug;
![]()
}
if ( $line =~ m{lan:(\d+\.\d+\.\d+\.\d+)}i ) {
![]()
$lan_ip = $1;
![]()
}
if ( $line =~ m{wan:(\d+\.\d+\.\d+\.\d+)}i ) {
![]()
$wan_ip = $1;
![]()
}
#如果主机名长度,进行补0(便于SecureCrt的排序)
![]()
if ( $hostname =~ m{(\w+)(\d{4})}i ) {
} elsif ( $hostname =~ m{(\w+)(\d{3})}i ) {
![]()
$hostname = "$1" . "0" . "$2";
![]()
} elsif ( $hostname =~ m{(\w+)(\d{2})}i ) {
![]()
$hostname = "$1" . "00" . "$2";
![]()
} elsif ( $hostname =~ m{(\w+)(\d{1})}i ) {
![]()
$hostname = "$1" . "000" . "$2";
![]()
}
if ($type =~ m{^lan$}i) {
![]()
$file_name = "($hostname) " . $lan_ip . ".ini";
![]()
} elsif ($type =~ m{^wan$}i) {
![]()
$file_name = "($hostname) " . $wan_ip . ".ini";
![]()
} else {
![]()
die "type unkown please input right type: $!\n"
![]()
}
print $file_name . "\n" if $debug;
if ($type =~ m{^lan$}i) {
![]()
$contents =~ s/\"Hostname\"=\d+\.\d+\.\d+\.\d+/\"Hostname\"=$lan_ip/;
![]()
} elsif ($type =~ m{^wan$}i) {
![]()
$contents =~ s/\"Hostname\"=\d+\.\d+\.\d+\.\d+/\"Hostname\"=$wan_ip/;
![]()
} else {
![]()
die "type unkown please input right type: $!\n"
![]()
}
![]()
$contents =~ s/\[SSH2\]\s+Port\"=[\dA-Fa-f]+/\[SSH2\] Port\"=$port/;
![]()
$contents =~ s/\"Username\"=\w+/\"Username\"=$user/;
![]()
$contents =~ s/\"Password\"=\w+/\"Password\"=$password/;
chdir $session_path or die "can't change directory: $!";
![]()
open FH, "> $file_name" or die "Cant open $file_name file: $!";
![]()
printf FH ($contents);
![]()
close FH;
![]()
last if $debug;
![]()
}
![]()
sub print_help {
![]()
printf "\t (%s) auto create SecureCRT session files,must allocate OPTIONS list/user/port/password \n",$PROGRAM_NAME;
![]()
printf "\t VERSION is %s \n",$VERSION;
![]()
printf "\t--type setting session use lan or wan,default is lan \n";
![]()
printf "\t--port setting session use port,default is 9922 \n";
![]()
printf "\t--user setting session use user,default is root \n";
![]()
printf "\t--password setting ssession use passowrd,default is 111111 \n";
![]()
printf "\t passowrd is use secure encrypt \n";
![]()
printf "\t--list attach to list path \n";
![]()
printf "\t default list file in local directory list \n";
![]()
printf "\t--debug setting debug mode\n";
![]()
printf "\n";
![]()
printf "\t how to use Example as follows \n";
![]()
printf "\t perl cre_sess.pl --port 22 --user nagios --password 8d860cf50f78af1a2833433076d288f3 --list list \n"
![]()
}
sub convert_dec {
my $port = shift;
![]()
my $port_total_len = 8;
![]()
$port = sprintf( "%x",$port);
![]()
my $port_len = length($port);
![]()
my $bad = $port_total_len - $port_len;
![]()
my $hex_port .= 0 x $bad . $port;
![]()
return $hex_port;
![]()
}