#!/usr/bin/perl # use warnings; use strict; my $myNode = $ARGV[0]; sub getNodes { my $nodelist = "../nodelist"; open(my $data, '<', $nodelist); print("Generating files\n"); while (my $line = <$data>) { chomp $line; my @fields = split(",", $line); my $nodeName = $fields[0]; my $nodeAddress = $fields[1]; generatePort($nodeName,$nodeAddress); generateSys($nodeName); getKeys($nodeAddress); generateConfig(); print("System ".$nodeName." added successfully\n"); } print("Done\n"); } sub generatePort { my $currentNode = shift; my $nodeAddress = shift; $currentNode =~ s/^([a-z])/\U$1/; my $template = qq{ port $currentNode type pipe command /usr/bin/ssh -a -x -q -i /var/spool/uucp/.ssh/id_rsa -l uucp $nodeAddress reliable true protocol etyig }; my $portFile = "port"; open(FH, '>>', $portFile); print FH $template; } sub generateSys { my $nodeName = shift; my $template = qq{ system $nodeName call-login * call-password * local-send / local-receive /var/spool/uucppublic remote-send / remote-receive /var/spool/uucppublic time any forward ANY chat \"\" \\d\\d\\r\\c login: \\d\\L word: \\P chat-timeout 60 protocol t port Center }; my $sysFile = "sys"; open(FH, '>>', $sysFile); print FH $template; }; sub generatePasswd { } sub generateConfig { my $nodeName = shift; my $confFile = "config"; open(FH, '>',$confFile); my $nodeConfig = "nodename\t\t".$myNode; print FH $nodeConfig; } sub getKeys { my $address = shift; my $cmd = "/usr/bin/ssh-keyscan ".$address; system($cmd); } sub preCheck() { print("Updating git repo\n"); chdir("../"); system("git pull"); print("Installing authorized_keys\n"); rename("authorized_keys",".ssh/authorized_keys"); print("Pre-flight checks done\n"); getNodes(); } preCheck();