![]() ![]() | ![]() |
debugging; optimizing list so that it works
1: #!/usr/bin/perl 2: 3: # A post-installation script 4: # to finalize a LON-CAPA 5: # installation. 6: 7: # set /etc/hosts.deny to be ALL: ALL 8: open OUT, ">/etc/hosts.deny"; 9: print OUT "ALL: ALL\n"; 10: close OUT; 11: 12: # get wget and install 13: system('lynx -source http://install.lon-capa.org/3.1/SupplementalRPMS/wget-1.5.3-6.i386.rpm > wget-1.5.3-6.i386.rpm'); 14: system('rpm -Uvh --force wget-1.5.3-6.i386.rpm'); 15: 16: # download SupplementalRPMS and install 17: system('wget','-r','-np','http://install.lon-capa.org/3.1/SupplementalRPMS'); 18: system('rpm -Uvh --force install.lon-capa.org/3.1/SupplementalRPMS/*.rpm'); 19: 20: # download remove_extra.sh and run 21: system('wget','-r','-np','http://install.lon-capa.org/3.1/scripts/remove_extra.sh'); 22: system('sh','./remove_extra.sh'); 23: 24: # download FinalRPMS and install 25: system('wget','-r','http://install.lon-capa.org/3.1/FinalRPMS'); 26: system('rpm -Uvh --force install.lon-capa.org/3.1/FinalRPMS/*.rpm'); 27: 28: my $okay=0; 29: DEV: while ($okay==0) { 30: print "\n\nWill this machine be used to develop future LON-CAPA software? (y/n)\n"; 31: my $input=<>; 32: if ($input=~/^y/i) { 33: $okay=1; 34: } 35: elsif ($input=~/^n/i) { 36: last DEV; 37: } 38: } 39: if (!$okay) { 40: system('wget','http://install.lon-capa.org/3.1/scripts/remove_extra_dev.sh'); 41: system('sh','./remove_extra_dev.sh'); 42: } 43: 44: # allow entry of new access.conf parameters 45: my @perlsetvars=("lonHostID","lonRole","lonAdmEMail","lonDefDomain","lonLoadLim","lonExpire"); 46: my %psvinfo=( 47: "lonHostID" => <<END 48: LON Host ID is an internal ID within the LON-CAPA 49: network used to specify the uniqueness of a particular 50: LON-CAPA server. Current examples include "msul1", "msua3", 51: "103l1", "fsul1", and "107a1". 52: END 53: , "lonRole" => <<END 54: LON Role specifies the role this machine plays within 55: the LON-CAPA network. There are two valid values for 56: this: 57: * library 58: * access 59: END 60: , "lonAdmEMail" => <<END 61: LON System Administrator E-Mail specifies the e-mail 62: address of an institutional member responsible for 63: direct upkeep of this server. 64: END 65: , "lonDefDomain" => <<END 66: LON Domain is a unique internal identifier within the LON-CAPA network 67: specific to the home institution. Current examples include 68: "msu", "fsu", "103", and "107". 69: END 70: , "lonLoadLim" => <<END 71: LON Load Limit specifies a threshold of activity within The Learning 72: Online Network that this machine should provide. We strongly recommend 73: a value of 2.00. Depending on processor architecture (dual processor), 74: this value may be increased, but there is no readily available measure 75: in this regard. 76: END 77: , "lonExpire" => <<END 78: LON Expiration Time indicates, in seconds, how long distributed resources 79: should be held in the server's cache when not being accessed by students, 80: instructors, or any other class of user. We recommend a value of 86400. 81: END 82: ); 83: my $template=`/bin/cat /etc/httpd/conf/access.conf`; 84: $okay=0; 85: while ($okay==0) { 86: foreach my $psv (@perlsetvars) { 87: print "\n"; 88: print $psvinfo{$psv}; 89: print "\nEnter in value for $psv: "; my $input=<>; chop $input; 90: my $pval=$input; 91: $template=~s/(\nPerlSetVar\s+$psv\s+)\S+/$1$pval/; 92: $pvar{$psv}=$pval; 93: } 94: print "\n\nThese are the current values:\n"; 95: foreach my $psv (@perlsetvars) { 96: print "$psv\t\t$pvar{$psv}\n"; 97: } 98: print "Are these correct? (y/n)"; 99: my $input=<>; 100: if ($input=~/^y/i) { 101: $okay=1; 102: } 103: } 104: open OUT,">/etc/httpd/conf/access.conf"; 105: print OUT $template; 106: close OUT; 107: 108: $template=`/bin/cat /etc/smb.conf`; 109: foreach my $psv (@perlsetvars) { 110: $template=~s/\{\{\{\{\[(.*?)\]\}\}\}\}/$pvar{$1}/ge; 111: } 112: open OUT,">/etc/smb.conf"; 113: print OUT $template; 114: close OUT; 115: 116: # unshadow passwords 117: # change this line in /etc/pam.d/login 118: # password required /lib/security/pam_pwdb.so nullok use_authtok md5 shadow 119: $template=`/bin/cat /etc/pam.d/login`; 120: $template=~s|password required /lib/security/pam_pwdb\.so nullok use_authtok md5 shadow|password required /lib/security/pam_pwdb.so nullok use_authtok|; 121: open OUT, ">/etc/pam.d/login"; 122: print OUT $template; 123: close OUT; 124: # change this line in /etc/pam.d/passwd 125: # password required /lib/security/pam_pwdb.so use_authtok nullok md5 shadow 126: $template=`/bin/cat /etc/pam.d/passwd`; 127: $template=~s|password required /lib/security/pam_pwdb\.so nullok use_authtok md5 shadow|password required /lib/security/pam_pwdb.so nullok use_authtok|; 128: open OUT, ">/etc/pam.d/passwd"; 129: print OUT $template; 130: close OUT; 131: `/usr/sbin/pwunconv`; 132: `/usr/sbin/grpunconv`; 133: # set new passwords 134: print "Now we need to have passwords entered in order to unshadow this machine.\n"; 135: system('stty -echo'); 136: $okay=0; 137: my $input1; 138: my $input2; 139: while ($okay==0) { 140: print "Enter in password for root: "; 141: $input1=<>; chop $input1; 142: print "\nEnter in password again for root: "; 143: $input2=<>; chop $input2; 144: if ($input1 ne $input2) { 145: print "\nPasswords do not match, try again.\n"; 146: } 147: else { 148: $okay=1; 149: } 150: } 151: open OUT, "|/usr/sbin/chpasswd"; 152: print OUT "root:$input1\n"; 153: close OUT; 154: 155: $okay=0; 156: while ($okay==0) { 157: print "\nEnter in password for www: "; 158: $input1=<>; chop $input1; 159: print "\nEnter in password again for www: "; 160: $input2=<>; chop $input2; 161: if ($input1 ne $input2) { 162: print "\nPasswords do not match, try again.\n"; 163: } 164: else { 165: $okay=1; 166: } 167: } 168: open OUT, "|/usr/sbin/chpasswd"; 169: print OUT "www:$input1\n"; 170: close OUT; 171: system('stty echo'); 172: 173: # create mime.types link 174: `ln -s /etc/mime.types /etc/httpd/conf/mime.types`; 175: 176: # restart network and inet services 177: system('/etc/rc.d/init.d/network','reload'); 178: system('/etc/rc.d/init.d/inet','restart'); 179: # restart httpd 180: system('/etc/rc.d/init.d/httpd','restart'); 181: 182: # fix the setup of init.d processes 183: # nfs 184: # bash$ diff nfs nfs~ 185: # 6c6 186: # < # chkconfig: 345 60 20 187: # --- 188: # > # chkconfig: - 60 20 189: # then chkconfig 190: $template=`/bin/cat /etc/rc.d/init.d/nfs`; 191: $template=~s/\# chkconfig: - 60 20/\# chkconfig: 345 60 20/; 192: open OUT,">/etc/rc.d/init.d/nfs"; 193: print OUT $template; 194: close OUT; 195: $template=`/bin/cat /etc/rc.d/init.d/xntpd`; 196: $template=~s/\# chkconfig: - 55 10/\# chkconfig: 345 55 10/; 197: open OUT,">/etc/rc.d/init.d/xntpd"; 198: print OUT $template; 199: close OUT; 200: 201: # ntp 202: # chkconfig 345 203: # then chkconfig 204: 205: # make atalk specific modifications 206: # /etc/atalk/config 207: open OUT, ">/etc/atalk/config"; 208: print OUT <<END; 209: # Appletalk configuration 210: # Change this to increase the maximum number of clients that can connect: 211: AFPD_MAX_CLIENTS=5 212: # Change this to set the machine's atalk name: 213: # ATALK_NAME=`echo \${HOSTNAME}|cut -d. -f1` 214: ATALK_NAME=`grep '^PerlSetVar.*lonHostID' /etc/httpd/conf/access.conf | perl -e '\$_=<>; split(/\\s+/); print "LONCAPA_\$_[2]"; 215: '` 216: # Set which daemons to run: 217: PAPD_RUN=no 218: AFPD_RUN=yes 219: # Control whether the daemons are started in the background 220: ATALK_BGROUND=no 221: END 222: close OUT; 223: # /etc/conf.modules should have this line 224: # alias net-pf-5 appletalk 225: # depmod -a 226: $template=`/bin/cat /etc/conf.modules`; 227: $template.="alias net-pf-5 appletalk\n"; 228: open OUT, ">/etc/conf.modules"; 229: print OUT $template; 230: close OUT; 231: system('depmod -a'); 232: 233: # restart nfs, smb, xntpd and atalk services 234: system('/etc/rc.d/init.d/smb','restart'); 235: system('/etc/rc.d/init.d/atalk','restart'); 236: system('/etc/rc.d/init.d portmap','stop'); 237: system('/etc/rc.d/init.d nfs','stop'); 238: system('/etc/rc.d/init.d portmap','start'); 239: system('/etc/rc.d/init.d nfs','start'); 240: system('/etc/rc.d/init.d/smb','restart'); 241: system('/etc/rc.d/init.d/inet','restart'); 242: system('/etc/rc.d/init.d/xntpd','restart'); 243: 244: # restart loncontrol 245: print "Please be patient while loncontrol services are restarted (approximately 10 minutes).\n"; 246: system('/etc/rc.d/init.d/loncontrol','restart'); 247: 248: # warn about /etc/hosts.allow 249: print <<END; 250: Final note: Currently your machine is set-up 251: to disable many different kinds of network 252: connectivity. To enable network connectivity 253: different than that needed for LON-CAPA, you 254: must make appropriate adjustment to the 255: /etc/hosts.allow file. 256: END