--- /dev/null
+#!/bin/bash
+# ============================================================================
+#
+# Copyright (C) THALES. All rights reserved
+# Author: Laurent Mazet
+#
+
+# Date : 10/10/2013
+#
+# 05/11/2013 : LMa configuration des timezone Zulu(GMT) et Paris
+# Desactivation de pam pour ssh
+# ============================================================================
+
+# Switch configuration
+
+# TODO
+# *
+
+MODE_BW=""
+MODE_FIX=""
+MODE_HW=""
+MODE_NET=""
+MODE_TZ=""
+TARBALLS=""
+PROGNAME=$(basename $0)
+VER=1.0
+TMPLOG=/tmp/$PROGNAME-$$.log
+
+# help function
+
+function usage () {
+ echo "usage: $PROGNAME <mode>"
+ echo " switch trc6500 mode"
+ echo " avaliable modes are:"
+ echo " - 8MHzMHF, 12MHzDF, 12MHzMDF, 30MHzMDF 30MHzMDF.lite or 30MHzMHF"
+ echo " - fix_ssh"
+ echo " - hw_ibm or hw_supermicro"
+ echo " - network"
+ echo " - tz_zulu or tz_paris"
+ exit $@
+}
+
+# formating functions
+
+function title () { echo -e "\033[0;1m$*\033[0;0m"; }
+function pass () { echo -e "\033[1;32m$*\033[0;0m"; }
+function warn () { echo -e "\033[1;33m$*\033[0;0m"; }
+function fail () { echo -e "\033[1;31m$*\033[0;0m"; }
+
+# check command
+
+function check () {
+ echo -n "$@: "
+ $@ 2>$TMPLOG && pass OK || { fail KO; cat $TMPLOG; exit 1; }
+ rm -f $TMPLOG
+}
+
+# argument processing
+
+while [ $# -gt 0 ]; do
+ case "$1" in
+ -h) usage 0;;
+ 8mhz|8MHz|12mhzdf|12MHzDF|12mhzmdf|12MHzMDF|30mhzmdf|30MHzMDF|30mhzmdf.lite|30MHzMDF.lite|30mhzmhf|30MHzMHF) MODE_BW="${1^^}";;
+ fix_ssh) MODE_FIX="$1";;
+ hw_ibm|hw_supermicro) MODE_HW="$1";;
+ network) MODE_NET="$1";;
+ tz_paris|tz_zulu) MODE_TZ="$1";;
+ *) usage 1;;
+ esac
+ shift
+done
+
+# main process
+
+action=""
+
+if [ "$MODE_BW" ]; then
+ title "updating /etc/hosts"
+ MODE_BW=${MODE_BW/MHZ/MHz}
+ check rm -f /etc/hosts
+ check ln -s /etc/hosts.${MODE_BW/LITE/lite} /etc/hosts
+ TARBALLS+=" root"
+ for ip in 0A851{A,C}; do check ln -T -f -s default /opt/tftp/pxelinux.cfg/$ip; done
+ case "$MODE_BW" in
+ 8MHzMHF)
+ for ip in 0A851{A,C}A5; do check ln -T -f -s rec /opt/tftp/pxelinux.cfg/$ip; done
+ ;;
+ 12MHzDF) ;;
+ 12MHzMDF) ;;
+ 30MHzMDF) ;;
+ 30MHzMDF.lite)
+ for ip in 0A851{A,C}; do check ln -T -f -s lite /opt/tftp/pxelinux.cfg/$ip; done
+ check cp /etc/dhcp/dhcpd.conf.lite /etc/dhcp/dhcpd.conf
+ ;;
+ 30MHzMHF)
+ for ip in 0A851{A,C}A{1..6}; do check ln -T -f -s acq /opt/tftp/pxelinux.cfg/$ip; done
+ for ip in 0A851{A,C}A9; do check ln -T -f -s rec /opt/tftp/pxelinux.cfg/$ip; done
+ ;;
+ esac
+ action="done"
+fi
+
+if [ "$MODE_FIX" ]; then
+
+ case "$MODE_FIX" in
+ fix_ssh)
+ sed -i 's/^\(UsePAM\) yes/\1 no/' /etc/ssh/sshd_config
+ TARBALLS+=" root"
+
+ action="done"
+ esac
+
+fi
+
+if [ "$MODE_HW" ]; then
+
+ conf=/etc/default/shutdownallblades
+
+ title "change shutdownallblades"
+ if $(grep -sq '^#*REBOOT=' $conf); then
+ case "$MODE_HW" in
+ hw_ibm) check sed -i 's/^#*REBOOT=.*$/#REBOOT=yes/' $conf;;
+ hw_supermicro) check sed -i 's/^#*REBOOT=.*$/REBOOT=yes/' $conf;;
+ esac
+ else
+ case "$MODE_HW" in
+ hw_ibm) check sed -i '$a#REBOOT=yes' $conf;;
+ hw_supermicro) check sed -i '$aREBOOT=yes' $conf;;
+ esac
+ fi
+
+ action="done"
+fi
+
+if [ "$MODE_NET" ]; then
+
+ conf=/etc/dhcp/dhcpd.conf
+
+ title "update network configuraton"
+ if $(grep -sq 'trc[0-9]*_1' $conf); then
+ check sed -i 's/\(host.*trc[0-9][0-9]\)\([^_]\)/\1-rf\2/;s/\(host.*trc[0-9][0-9]\)_1/\1/' $conf
+ fi
+ TARBALLS+=" root"
+
+ action="done"
+fi
+
+if [ "$MODE_TZ" ]; then
+ case "$MODE_TZ" in
+ tz_paris) TZ="Europe/Paris";;
+ tz_zulu) TZ="Etc/Zulu";;
+ *) TZ="";;
+ esac
+
+ if [ "$TZ" ]; then
+ echo $TZ > /etc/timezone
+ TARBALLS+=" root"
+
+ action="done"
+ fi
+fi
+
+# last check
+[ "$action" ] || { echo "no mode specified"; exit 1; }
+
+[ "$TARBALLS" ] && make -f /opt/cluster/Makefile $TARBALLS
+
+# vim:set tabstop=4 expandtab shiftwidth=4:
--- /dev/null
+#!/bin/bash
+#
+# ============================================================================
+#
+# Copyright (C) THALES. All rights reserved
+# Author: Alexandre Cazalis
+#
+# Gestion attente lames esclaves au boot (ping,ssh)
+#
+# 2013-11-20 : V1.2 LMa
+# - Ajout de la personalisation de la commande a executer
+# par defaut (uptime). Ajout attente montage nfs avant demarrage
+# 2014-05-28 : V1.3 LMa
+# - Ajout d'un mode foreground pour ne tenter qu'une fois chaque commande
+# - Ajout d'une commande pour exclude la lame maitre
+#
+# 2014-10-28 : Change owner
+# ============================================================================
+
+# TODO
+# *
+
+CMD="uptime"
+MODE="iter"
+PROGNAME=$(basename $0)
+VER=1.3
+EXCLUDE="___"
+
+function usage () {
+ echo "usage: $PROGNAME [-c command] [-h] [-i] [-o] [-t seconds] [-v] [-w] [-x] host1 host2..."
+ echo " -c: set command (default '$CMD')"
+ echo " -h: help message"
+ echo " -i: infinity loop mode [default]"
+ echo " -o: only try ones"
+ echo " -t: timeout"
+ echo " -v: version message"
+ echo " -w: wait mode"
+ echo " -x: avoid master blade"
+ exit $@
+}
+
+while [ $# -gt 0 ]; do
+ case "$1" in
+ -c) shift; CMD=$1;;
+ -h) usage 0;;
+ -i) MODE="iter";;
+ -o) MODE="ones";;
+ -t) shift; [[ "$1" =~ [^0-9] ]] && { echo "incorrect timeout ($1)"; exit 1;}; TIMEOUT=$1;;
+ -v) echo "$PROGNAME: version $VER"; exit;;
+ -w) MODE="wait";;
+ -x) EXCLUDE="trc00";;
+ *) list+=" "$1;;
+ esac
+ shift
+done
+
+# list
+[ "$list" ] || list=$(awk '{sub(/#.*/, "")} /trc[0-9][0-9]/ && ! /-rf/ {print $2}' /etc/hosts)
+list=$(echo $list" "|sed s/$EXCLUDE//)
+
+# timeout
+if [ "$TIMEOUT" ]; then
+ trap "echo 'timeout expired (${TIMEOUT}s)'; exit 0;" SIGVTALRM
+ ( sleep $TIMEOUT; kill -SIGVTALRM $$ 2>/dev/null; [ $? -eq 0 ] && rc=1 || rc=0; exit $rc) &
+fi
+trap "exit 0;" SIGINT
+
+# main loop
+while true; do
+ for host in $list; do
+ stat=0
+ echo -n ${host}:" "
+ ping -c 1 $host >&/dev/null && { ssh -t -o ConnectTimeout=1 root@$host "$CMD" 2>/dev/null && stat=1 || echo "soon..."; } || echo
+ [ "$MODE" = "wait" -a $stat -eq 1 ] && list=${list/$host }
+ done
+ [ "$MODE" = "ones" ] && break;
+ [[ "$list" =~ [a-zA-Z0-9_-] ]] && sleep 1 || break;
+done
--- /dev/null
+#!/bin/bash
+
+# parameters
+#
+# ============================================================================
+#
+# Copyright (C) THALES. All rights reserved
+# Author: Laurent Mazet
+#
+# 2013-11-10 V1.0 : Creation
+#
+# 2013-11-20 V1.1 : L.Mazet ajout possibilite de configuration du switch
+#
+# ============================================================================
+
+DRY=
+ID=
+IP=192.168.0.1
+TRC6500_SCRIPT_DIR=$(dirname $0)
+
+# help function
+
+function usage () {
+ echo "usage: $PROGNAME [-a] [-d] [-h] [-i <id>]"
+ echo " -a: configure all boards"
+ echo " -d: dry mode"
+ echo " -h: help message"
+ echo " -i: board id (from 1 to 5)"
+ exit $@
+ }
+
+# formating functions
+
+function title () { echo -e "\033[0;1m$*\033[0;0m"; }
+function pass () { echo -e "\033[1;32m$*\033[0;0m"; }
+function warn () { echo -e "\033[1;33m$*\033[0;0m"; }
+function fail () { echo -e "\033[1;31m$*\033[0;0m"; }
+
+# configuration values
+
+# argument processing
+
+while [ $# -gt 0 ]; do
+ case "$1" in
+ -a) ID=all;;
+ -d) DRY=yes;;
+ -h) usage 0;;
+ -i) shift; ID=$1;;
+ *) usage 1;;
+ esac
+ shift
+done
+
+# switch port configure function ()
+
+function sw_configure () {
+ case "$1" in
+ off) CMD="-c 'configure terminal' -c 'interface range g1/39-44' -c 'shutdown' -c end -c 'clear mac address-table dynamic' -c 'clear ip arp inspection log' -c exit";;
+ on) CMD="-c 'configure terminal' -c 'interface range g1/39-44' -c 'no shutdown' -c end -c exit";;
+ 1) CMD="-c 'configure terminal' -c 'interface g1/39' -c 'no shutdown' -c end -c exit";;
+ 2) CMD="-c 'configure terminal' -c 'interface g1/40' -c 'no shutdown' -c end -c exit";;
+ 3) CMD="-c 'configure terminal' -c 'interface g1/41' -c 'no shutdown' -c end -c exit";;
+ 4) CMD="-c 'configure terminal' -c 'interface g1/42' -c 'no shutdown' -c end -c exit";;
+ 5) CMD="-c 'configure terminal' -c 'interface g1/43' -c 'no shutdown' -c end -c exit";;
+ 6) CMD="-c 'configure terminal' -c 'interface g1/44' -c 'no shutdown' -c end -c exit";;
+ esac
+
+ if [ "$DRY" = "yes" ]; then
+ echo connect_switch.tcl -h swm $CMD
+ else
+ LOG=/tmp/$PROGNAME-$$.log
+ echo -n "sw_configure $1: "
+ eval $TRC6500_SCRIPT_DIR/connect_switch.tcl $CMD swm >&$LOG && pass OK || { fail KO; cat $LOG; exit 1; }
+ rm -f $LOG
+ fi
+}
+
+case "$ID" in
+1) CH1=0; CH2=1; CLOCKREF=external;;
+2) CH1=2; CH2=3; CLOCKREF=internal;;
+3) CH1=4; CH2=5; CLOCKREF=internal;;
+4) CH1=6; CH2=7; CLOCKREF=internal;;
+5) CH1=8; CH2=9; CLOCKREF=internal;;
+6) CH1=10; CH2=11; CLOCKREF=internal;;
+all)
+ for id in $(seq 1 5); do
+ title "switch off all fe306 ports"
+ sw_configure off
+ title "switch on port for fe306 $id"
+ sw_configure $id
+ title "configure fe306 $id"
+ if [ "$DRY" = "yes" ]; then
+ echo $(basename $0) -i $id
+ else
+ { $0 -i $id | mawk -W interactive '{print " " $0}'; } && pass OK || { fail KO; exit 1; }
+ fi
+ done
+ title "switch on all fe306 ports"
+ sw_configure on
+ exit 0
+ ;;
+*) echo "unknown fe306 id ($ID)"; exit 1;;
+esac
+
+# configure function
+
+function configure () {
+ echo -n "$1 [$2 <= $3]: "
+ if [ "$DRY" = "yes" ]; then
+ echo wget -q -O - http://$IP/$1?$2=$3
+ else
+ wget -q -O - http://$IP/$1?$2=$3 >/dev/null && pass OK || { fail KO; exit 1; }
+ fi
+}
+
+# setup local address
+
+title "setup local address"
+cmd="ifconfig eth1:1 192.168.0.2 netmask 255.255.255.0"
+[ "$DRY" = "yes" ] && echo $cmd || { echo -n $cmd" "; eval $cmd && pass OK || { fail KO; exit 1; }; }
+
+# check if fe306 is connected
+
+#title "check presence of $IP"
+#cmd="ping -c 1 -w 10 -W 10 $IP"
+#[ "$DRY" = "yes" ] && echo $cmd || { echo -n $cmd" "; eval $cmd >&/dev/null && pass OK || { warn KO; ifconfig eth1:1 down; exit 0; }; }
+
+# get serial number
+
+[ "$DRY" = "yes" ] && SN=00 || \
+ SN=$(wget -q -O - http://$IP/versions_en.html | mawk '/MODULE/ { module = 1 } /Serial Number/ { if (module) { printf "%02X", $4; exit 0 } }')
+
+[[ "$SN" =~ ^[0-9A-F][0-9A-F]$ ]] || { echo "unknown serial number ($SN)"; exit 1; }
+
+# configure ip
+
+title "configure ip"
+
+configure ModeServ.cmd serv_mode MANUAL
+configure MacServ.cmd serv_mac 00.80.EE.00.$SN.01
+configure IpServ.cmd serv_ip $(getent hosts | awk '/fe306-'$ID'/ {print $1}')
+configure MaskServ.cmd serv_mask 255.255.255.0
+
+for i in $(seq 1 8); do
+ configure MacProd$i.cmd prod_mac$i 00.80.EE.00.$SN.0$((i+1))
+ configure IpProd$i.cmd prod_ip$i 10.133.26.1$ID$i
+done
+
+configure IpMulticast.cmd multicast_ip 238.0.0.0
+configure RxMulticast.cmd multicast_rx 62002
+configure TxMulticast.cmd multicast_tx 62004
+configure TTL.cmd ttl 10
+
+# configure gps
+
+title "configure gps"
+
+configure GpsRate.cmd gps_rate 19200
+configure GpsChar.cmd gps_char 8
+configure GpsStop.cmd gps_stop 1
+configure GpsParity.cmd gps_parity no
+
+# configure miscellaneous
+
+title "configure miscellaneous"
+configure BoardNum.cmd board_num $ID
+configure RackNum.cmd rack_num 1
+configure Chan1Num.cmd channel1_num $CH1
+configure Chan2Num.cmd channel2_num $CH2
+
+configure FpgaLoc.cmd fpga_loc FLASH
+configure Clk10Mhz.cmd clk_10 $CLOCKREF
+configure PllConfig.cmd pll_cfg pll_cfg_02
+
+# unset local address
+
+title "unset local address"
+cmd="ifconfig eth1:1 down"
+[ "$DRY" = "yes" ] && echo $cmd || { echo -n $cmd" "; eval $cmd && pass OK || { fail KO; exit 1; }; }
+
+# vim:set tabstop=4 shiftwidth=4 softtabstop=4:
--- /dev/null
+#!/usr/bin/expect
+
+# ============================================================================
+#
+# Copyright (C) THALES. All rights reserved
+#
+# * V1.0 Laurent Mazet 29/04/2013
+# creation script de configuration de la matrice par ligne de commande
+# ============================================================================
+
+spawn /opt/trc6500/tools/matrix_tool
+
+set timeout 3
+
+exec ifconfig eth1:0 192.168.1.1 netmask 255.255.255.0
+
+proc cleanexit {rc} {
+ exec ifconfig eth1:0 down
+ exit $rc
+}
+
+expect {
+ "taper la commande choisie" { send "0\r" }
+ timeout { send_user "connection to $host timed out\n"; cleanexit 1 }
+ eof { send_user "connection to host failed\n"; cleanexit 1 }
+}
+expect {
+ "timeout detected" { send_user "can't connect on defaut ip\n"; cleanexit 1 }
+ "taper la commande choisie" { send "10\r" }
+}
+
+expect "nouvelle adresse" { send "010.133.026.253\r" }
+
+expect "taper la commande choisie" { send "12\r" }
+
+expect "taper la commande choisie" { send "14\r" }
+
+cleanexit 0
+# vim:set tabstop=4 expandtab shiftwidth=4:
--- /dev/null
+#!/usr/bin/expect
+
+# ============================================================================
+#
+# Copyright (C) THALES. All rights reserved
+# Author: Laurent Mazet
+#
+# Script de configuration du switchs
+#
+# 2013-10-10 V1.0 : Creation
+#
+# ============================================================================
+
+set host [lrange $argv 0 0]
+if { $host == "" } {
+ puts "usage: configure_switch.tcl \[sw1|sw2|swg1|swg2|swm\]"
+ exit 1
+}
+
+set tftpserver ""
+if { $host == "swg1" } { set tftpserver "10.133.26.160" }
+if { $host == "swg2" } { set tftpserver "10.133.26.160" }
+if { $host == "swm" } { set tftpserver "10.133.28.160" }
+if { $host == "sw1" } { set tftpserver "10.133.26.160" }
+if { $host == "sw2" } { set tftpserver "10.133.26.160" }
+if { $tftpserver == "" } { puts "unknown switch '$host'"; exit }
+
+set date [ exec date +%Y%m%d-%H:%m:%S ]
+set backup "$host-$date.txt"
+
+spawn telnet $host
+
+set timeout 30
+
+expect {
+ "Password:" { send "thales\r" }
+ incorrect { send_user "invalid password or account\n"; exit 1 }
+ timeout { send_user "connection to $host timed out\n"; exit 1 }
+ eof { send_user "connection to host failed\n"; exit 1 }
+}
+expect -exact ">" { send "enable\r" }
+expect "Password:" { send "thales\r" }
+expect "#" { send "copy running-config tftp://$tftpserver/$backup\r" }
+expect -exact "?" { send "$tftpserver\r" }
+expect -exact "?" { send "$backup\r" }
+expect "#" { send "copy tftp://$tftpserver/$host.txt startup-config\r" }
+expect -exact "?" { send "startup-config\r" }
+#expect "#" { send_user " << reload or exit ? >> "; interact }
+expect "#" { send "reload\r" }
+
+exit 0
+# vim:set tabstop=4 expandtab shiftwidth=4:
--- /dev/null
+#!/usr/bin/expect
+
+set host [lrange $argv 0 0]
+if { $host == "" } {
+ puts "usage: configure_switch_bootstrap.tcl \[sw1|sw2|swg1|swg2|swm\]"
+ exit 1
+}
+
+set ipaddress ""
+if { $host == "swg1" } { set ipaddress "10.133.26.231" }
+if { $host == "swg2" } { set ipaddress "10.133.26.232" }
+if { $host == "swm" } { set ipaddress "10.133.28.231" }
+if { $host == "sw1" } { set ipaddress "10.133.26.231" }
+if { $host == "sw2" } { set ipaddress "10.133.26.232" }
+if { $ipaddress == "" } { puts "unknown switch '$host'""; exit 1 }
+
+spawn screen -c . /dev/ttyUSB0
+
+set timeout 5
+
+set state 0
+while { $state != 1 } {
+ expect {
+ timeout { send "\r" }
+ -exact ">" { send "enable\r" }
+ "#" { set state 1 }
+ "Password:" { send "thales\r" }
+ eof { send_user "connection to host failed\n"; exit 1 }
+ }
+}
+
+send "configure terminal\r"
+expect "#" { send "interface vlan 1\r" }
+expect "#" { send "ip address $ipaddress 255.255.255.0\r" }
+expect "#" { send "exit\r" }
+expect "#" { send "line vty 0 4\r" }
+expect "#" { send "password thales\r" }
+expect "#" { send "enable password thales\r" }
+expect "#" { send "end\r" }
+
+# quit switch connection
+expect "#" { send "exit\r" }
+
+# to quit screen we need to send C-a \.
+send "\001\\"
+expect "kill all your windows" { send "y\r" }
+
+exit 0
+# vim:set tabstop=4 expandtab shiftwidth=4:
--- /dev/null
+#!/usr/bin/expect
+
+# ============================================================================
+#
+# Copyright (C) THALES. All rights reserved
+# Author: Laurent Mazet
+#
+# Script de connection au switchs
+#
+# 2013-10-10 V1.0 : Creation
+#
+# 2014-03-05 V1.1 : LMa ajout de passage de commande CISCO en parametre
+#
+# 2014-06-10 V1.2 : LMa ajout d'un fichier de commandes
+#
+# ============================================================================
+
+# default value
+set adminpassword "thales"
+set cmd {}
+set host ""
+set loginpassword "thales"
+set prompt "SW*"
+
+proc usage {rc} {
+ puts "usage: connect_switch.tcl \[host\] \[-a adminpassword\] \[-c command\] \[-f file\] \[-h\] \[-l loginpassword\] \[-p prompt\]"
+ exit $rc
+}
+
+# process argument
+set action ""
+for {set i 0} {$i < [llength $argv]} {incr i} {
+ set arg [lindex $argv $i]
+ switch $arg {
+ -a { set action "-adminpassword" }
+ -c { set action "-cmd" }
+ -f { set action "-file" }
+ -h { usage 0 }
+ -l { set action "-loginpassword" }
+ -p { set action "-prompt" }
+ default {
+ switch $action {
+ -adminpassword { set adminpassword $arg }
+ -cmd { set cmd [lappend cmd $arg] }
+ -file {
+ if {[file isfile $arg] == 1} then {
+ set f [open $arg "r"]
+ set data [read $f]
+ close $f
+ foreach line [split $data "\n"] {
+ set cmd [lappend cmd $line]
+ }
+ } else {
+ puts "can't open file '$arg'"
+ exit 1
+ }
+ }
+ -loginpassword { set loginpassword $arg }
+ -prompt { set prompt $arg }
+ default { set host $arg }
+ }
+ set action ""
+ }
+ }
+}
+if {$action != ""} {
+ puts "missing arguments"
+ exit 1
+}
+if { $host == "" } {
+ usage 1
+}
+
+# start connection
+spawn telnet $host
+
+# login password
+expect {
+ "Password:" { send "$loginpassword\r" }
+ timeout { send_user "connection to host failed\n"; exit 1 }
+ eof { send_user "connection to host failed\n"; exit 1 }
+}
+
+# admin password
+expect {
+ "$prompt>" { send "enable\r" }
+ timeout { send_user "connection to host failed\n"; exit 1 }
+ "Password:" { send_user "invalid login password\n"; exit 1 }
+}
+expect "Password:" { send "$adminpassword\r" }
+expect {
+ "$prompt#" { send "\r" }
+ "Password:" { send_user "invalid admin password\n"; exit 1 }
+}
+
+# commands or interactive mode
+if {[llength $cmd] == 0 } {
+ expect "$prompt#" { interact }
+} else {
+ expect "$prompt#" { send "terminal length 0\r" }
+ for {set i 0} {$i < [llength $cmd]} {incr i} {
+ expect {
+ "$prompt#" { send "[lindex $cmd $i]\r" }
+ "confirm" { send "\r"; continue }
+ }
+ }
+ expect {
+ "confirm" { send "\r"; expect "$prompt" { send "exit\r" } }
+ "$prompt" { send "exit\r" }
+ }
+ send_user "\n"
+}
+
+exit 0
+# vim:set tabstop=4 shiftwidth=4 softtabstop=4:
--- /dev/null
+#!/usr/bin/perl
+
+open PROC_STAT, "</proc/stat";
+my @proc_stat=<PROC_STAT>;
+close PROC_STAT;
+my @cpu_stat_t0 = grep {s/^cpu\d+\s//} (@proc_stat);
+sleep 1;
+open PROC_STAT, "</proc/stat";
+my @proc_stat=<PROC_STAT>;
+close PROC_STAT;
+my @cpu_stat_t1 = grep {s/^cpu\d+\s//} (@proc_stat);
+
+my $total = 0;
+for (my $cpu_i=0; $cpu_i<(scalar @cpu_stat_t0); $cpu_i++) {
+ my @stat_t0 = split /\s+/, $cpu_stat_t0[$cpu_i];
+ my @stat_t1 = split /\s+/, $cpu_stat_t1[$cpu_i];
+ my ($t0_idle, $t1_idle) = ($stat_t0[3], $stat_t1[3]);
+ my ($t0_total, $t1_total) = (0, 0);
+ $t0_total += $_ foreach @stat_t0;
+ $t1_total += $_ foreach @stat_t1;
+
+ my $load = ($t1_total - $t0_total == 0) ? 100: int((100 * (($t1_total - $t0_total) - ($t1_idle - $t0_idle))/($t1_total - $t0_total)) + 0.5);
+ print " +" unless ($cpu_i == 0);
+ printf "% 5.1f%% ", $load;
+ $total += $load;
+}
+printf " = % 6.1f%%\n", $total;
--- /dev/null
+#!/bin/bash
+
+# parameters
+#
+# ============================================================================
+#
+# Copyright (C) THALES. All rights reserved
+# Author: Laurent Mazet
+#
+# 2014-10-06 V1.0 : Creation
+#
+# ============================================================================
+
+DRY=
+FIRMWARE=/opt/trc6500/config/code_metier/libHwCtrl/Bitstream
+LIST="application.out production.bin ts12_fp_pano.bin ts22_fp_pano.bin firmware.out"
+HOST=
+TRC6500_SCRIPT_DIR=$(dirname $0)
+
+# help function
+
+function usage () {
+ echo "usage: $PROGNAME [-d] [-f dir] [-h] [-i host] [-l list]"
+ echo " -d: dry mode"
+ echo " -f: firmware directory ($FIRMWARE)"
+ echo " -h: help message"
+ echo " -i: board hostname (or ip)"
+ echo " -l: list of firmware ($LIST)"
+ exit $@
+ }
+
+# formating functions
+
+function title () { echo -e "\033[0;1m$*\033[0;0m"; }
+function pass () { echo -e "\033[1;32m$*\033[0;0m"; }
+function warn () { echo -e "\033[1;33m$*\033[0;0m"; }
+function fail () { echo -e "\033[1;31m$*\033[0;0m"; }
+
+# argument processing
+
+while [ $# -gt 0 ]; do
+ case "$1" in
+ -d) DRY=yes;;
+ -f) shift; FIRMWARE=$1;;
+ -h) usage 0;;
+ -i) shift; HOST=$1;;
+ -l) shift; LIST=$1;;
+ *) usage 1;;
+ esac
+ shift
+done
+
+# check host
+
+[ "$HOST" ] || ping -c 1 $HOST >&/dev/null || \
+ { fail "Can't connect '$HOST'"; exit 1; }
+
+# check firmware
+
+for f in $LIST; do
+ [ -f $FIRMWARE/$f ] || { fail "Can't find '$FIRMWARE/$f'"; exit 1; }
+done
+
+# check mode
+
+protect=""
+[ "$DRY" = yes ] && protect="!echo"
+
+# flash firmware
+
+title "flash fe306 '$HOST'"
+
+ftp -n <<EOF
+open $HOST
+quote USER none
+quote PASS none
+binary
+cd flash
+$(for f in $LIST; do echo "$protect send $FIRMWARE/$f"; done)
+bye
+EOF
+
+# vim:set tabstop=4 shiftwidth=4 softtabstop=4:
--- /dev/null
+#!/usr/bin/expect
+
+# ============================================================================
+#
+# Copyright (C) THALES. All rights reserved
+# Author: Laurent Mazet
+#
+# Script de connection au switchs
+#
+# 2014-10-06 V1.0 : Creation
+#
+# ============================================================================
+
+# default value
+set blade {0}
+set host ""
+set login "admin"
+set password "thalescom02"
+set prompt "system>"
+
+proc usage {script_name rc} {
+ puts "usage: [exec basename $script_name] \[host\] \[-b blade\] \[-h\] \[-l login\] \[-p password\] \[-x prompt\]"
+ exit $rc
+}
+
+# process argument
+set action ""
+for {set i 0} {$i < [llength $argv]} {incr i} {
+ set arg [lindex $argv $i]
+ switch $arg {
+ -b { set action "-blade" }
+ -h { usage $argv0 0 }
+ -l { set action "-login" }
+ -p { set action "-password" }
+ -x { set action "-prompt" }
+ default {
+ switch $action {
+ -blade { set blade $arg }
+ -login { set login $arg }
+ -password { set password $arg }
+ -prompt { set prompt $arg }
+ default { set host $arg }
+ }
+ set action ""
+ }
+ }
+}
+if {$action != ""} {
+ puts "missing arguments"
+ exit 1
+}
+if { $host == "" } {
+ usage $argv0 1
+}
+
+# start connection
+spawn telnet $host
+
+# login
+expect {
+ "username:" { send "$login\r" }
+ timeout { send_user "connection to host failed\n"; exit 1 }
+ eof { send_user "connection to host failed\n"; exit 1 }
+}
+
+
+# password
+expect {
+ "password:" { send "$password\r" }
+ timeout { send_user "connection to host failed\n"; exit 1 }
+ eof { send_user "connection to host failed\n"; exit 1 }
+}
+
+expect {
+ "$prompt" { send "mt -b $blade\r" }
+ "username:" { send_user "connection to host failed\n"; exit 1 }
+}
+
+expect {
+ "OK" { send "exit\r" }
+ "$prompt" { send_user "error\n"; exit 1 }
+}
+
+send_user "\n"
+exit 0
+# vim:set tabstop=4 shiftwidth=4 softtabstop=4:
OBJECTS = deb/DEBIAN/preinst \
deb/DEBIAN/postrm \
- deb/DEBIAN/postinst \
- deb/opt/script
+ deb/DEBIAN/postinst
SHELL=/bin/bash
MODULE = $(shell basename `pwd`)
deb/DEBIAN/postinst: debian/debian-postinst deb
cp $< $@
-deb/opt/script: script deb
- mkdir -p $@
- cp $</* $@
-
$(TARGET): deb $(OBJECTS)
sed s/@@version@@/$(VERSION)/ debian/debian-control > deb/DEBIAN/control
mkdir -p deb/usr/share/doc/$(MODULE)
+++ /dev/null
-#!/bin/bash
-# ============================================================================
-#
-# Copyright (C) THALES. All rights reserved
-# Author: Laurent Mazet
-#
-
-# Date : 10/10/2013
-#
-# 05/11/2013 : LMa configuration des timezone Zulu(GMT) et Paris
-# Desactivation de pam pour ssh
-# ============================================================================
-
-# Switch configuration
-
-# TODO
-# *
-
-MODE_BW=""
-MODE_FIX=""
-MODE_HW=""
-MODE_NET=""
-MODE_TZ=""
-TARBALLS=""
-PROGNAME=$(basename $0)
-VER=1.0
-TMPLOG=/tmp/$PROGNAME-$$.log
-
-# help function
-
-function usage () {
- echo "usage: $PROGNAME <mode>"
- echo " switch trc6500 mode"
- echo " avaliable modes are:"
- echo " - 8MHzMHF, 12MHzDF, 12MHzMDF, 30MHzMDF 30MHzMDF.lite or 30MHzMHF"
- echo " - fix_ssh"
- echo " - hw_ibm or hw_supermicro"
- echo " - network"
- echo " - tz_zulu or tz_paris"
- exit $@
-}
-
-# formating functions
-
-function title () { echo -e "\033[0;1m$*\033[0;0m"; }
-function pass () { echo -e "\033[1;32m$*\033[0;0m"; }
-function warn () { echo -e "\033[1;33m$*\033[0;0m"; }
-function fail () { echo -e "\033[1;31m$*\033[0;0m"; }
-
-# check command
-
-function check () {
- echo -n "$@: "
- $@ 2>$TMPLOG && pass OK || { fail KO; cat $TMPLOG; exit 1; }
- rm -f $TMPLOG
-}
-
-# argument processing
-
-while [ $# -gt 0 ]; do
- case "$1" in
- -h) usage 0;;
- 8mhz|8MHz|12mhzdf|12MHzDF|12mhzmdf|12MHzMDF|30mhzmdf|30MHzMDF|30mhzmdf.lite|30MHzMDF.lite|30mhzmhf|30MHzMHF) MODE_BW="${1^^}";;
- fix_ssh) MODE_FIX="$1";;
- hw_ibm|hw_supermicro) MODE_HW="$1";;
- network) MODE_NET="$1";;
- tz_paris|tz_zulu) MODE_TZ="$1";;
- *) usage 1;;
- esac
- shift
-done
-
-# main process
-
-action=""
-
-if [ "$MODE_BW" ]; then
- title "updating /etc/hosts"
- MODE_BW=${MODE_BW/MHZ/MHz}
- check rm -f /etc/hosts
- check ln -s /etc/hosts.${MODE_BW/LITE/lite} /etc/hosts
- TARBALLS+=" root"
- for ip in 0A851{A,C}; do check ln -T -f -s default /opt/tftp/pxelinux.cfg/$ip; done
- case "$MODE_BW" in
- 8MHzMHF)
- for ip in 0A851{A,C}A5; do check ln -T -f -s rec /opt/tftp/pxelinux.cfg/$ip; done
- ;;
- 12MHzDF) ;;
- 12MHzMDF) ;;
- 30MHzMDF) ;;
- 30MHzMDF.lite)
- for ip in 0A851{A,C}; do check ln -T -f -s lite /opt/tftp/pxelinux.cfg/$ip; done
- check cp /etc/dhcp/dhcpd.conf.lite /etc/dhcp/dhcpd.conf
- ;;
- 30MHzMHF)
- for ip in 0A851{A,C}A{1..6}; do check ln -T -f -s acq /opt/tftp/pxelinux.cfg/$ip; done
- for ip in 0A851{A,C}A9; do check ln -T -f -s rec /opt/tftp/pxelinux.cfg/$ip; done
- ;;
- esac
- action="done"
-fi
-
-if [ "$MODE_FIX" ]; then
-
- case "$MODE_FIX" in
- fix_ssh)
- sed -i 's/^\(UsePAM\) yes/\1 no/' /etc/ssh/sshd_config
- TARBALLS+=" root"
-
- action="done"
- esac
-
-fi
-
-if [ "$MODE_HW" ]; then
-
- conf=/etc/default/shutdownallblades
-
- title "change shutdownallblades"
- if $(grep -sq '^#*REBOOT=' $conf); then
- case "$MODE_HW" in
- hw_ibm) check sed -i 's/^#*REBOOT=.*$/#REBOOT=yes/' $conf;;
- hw_supermicro) check sed -i 's/^#*REBOOT=.*$/REBOOT=yes/' $conf;;
- esac
- else
- case "$MODE_HW" in
- hw_ibm) check sed -i '$a#REBOOT=yes' $conf;;
- hw_supermicro) check sed -i '$aREBOOT=yes' $conf;;
- esac
- fi
-
- action="done"
-fi
-
-if [ "$MODE_NET" ]; then
-
- conf=/etc/dhcp/dhcpd.conf
-
- title "update network configuraton"
- if $(grep -sq 'trc[0-9]*_1' $conf); then
- check sed -i 's/\(host.*trc[0-9][0-9]\)\([^_]\)/\1-rf\2/;s/\(host.*trc[0-9][0-9]\)_1/\1/' $conf
- fi
- TARBALLS+=" root"
-
- action="done"
-fi
-
-if [ "$MODE_TZ" ]; then
- case "$MODE_TZ" in
- tz_paris) TZ="Europe/Paris";;
- tz_zulu) TZ="Etc/Zulu";;
- *) TZ="";;
- esac
-
- if [ "$TZ" ]; then
- echo $TZ > /etc/timezone
- TARBALLS+=" root"
-
- action="done"
- fi
-fi
-
-# last check
-[ "$action" ] || { echo "no mode specified"; exit 1; }
-
-[ "$TARBALLS" ] && make -f /opt/cluster/Makefile $TARBALLS
-
-# vim:set tabstop=4 expandtab shiftwidth=4:
+++ /dev/null
-#!/bin/bash
-#
-# ============================================================================
-#
-# Copyright (C) THALES. All rights reserved
-# Author: Alexandre Cazalis
-#
-# Gestion attente lames esclaves au boot (ping,ssh)
-#
-# 2013-11-20 : V1.2 LMa
-# - Ajout de la personalisation de la commande a executer
-# par defaut (uptime). Ajout attente montage nfs avant demarrage
-# 2014-05-28 : V1.3 LMa
-# - Ajout d'un mode foreground pour ne tenter qu'une fois chaque commande
-# - Ajout d'une commande pour exclude la lame maitre
-#
-# 2014-10-28 : Change owner
-# ============================================================================
-
-# TODO
-# *
-
-CMD="uptime"
-MODE="iter"
-PROGNAME=$(basename $0)
-VER=1.3
-EXCLUDE="___"
-
-function usage () {
- echo "usage: $PROGNAME [-c command] [-h] [-i] [-o] [-t seconds] [-v] [-w] [-x] host1 host2..."
- echo " -c: set command (default '$CMD')"
- echo " -h: help message"
- echo " -i: infinity loop mode [default]"
- echo " -o: only try ones"
- echo " -t: timeout"
- echo " -v: version message"
- echo " -w: wait mode"
- echo " -x: avoid master blade"
- exit $@
-}
-
-while [ $# -gt 0 ]; do
- case "$1" in
- -c) shift; CMD=$1;;
- -h) usage 0;;
- -i) MODE="iter";;
- -o) MODE="ones";;
- -t) shift; [[ "$1" =~ [^0-9] ]] && { echo "incorrect timeout ($1)"; exit 1;}; TIMEOUT=$1;;
- -v) echo "$PROGNAME: version $VER"; exit;;
- -w) MODE="wait";;
- -x) EXCLUDE="trc00";;
- *) list+=" "$1;;
- esac
- shift
-done
-
-# list
-[ "$list" ] || list=$(awk '{sub(/#.*/, "")} /trc[0-9][0-9]/ && ! /-rf/ {print $2}' /etc/hosts)
-list=$(echo $list" "|sed s/$EXCLUDE//)
-
-# timeout
-if [ "$TIMEOUT" ]; then
- trap "echo 'timeout expired (${TIMEOUT}s)'; exit 0;" SIGVTALRM
- ( sleep $TIMEOUT; kill -SIGVTALRM $$ 2>/dev/null; [ $? -eq 0 ] && rc=1 || rc=0; exit $rc) &
-fi
-trap "exit 0;" SIGINT
-
-# main loop
-while true; do
- for host in $list; do
- stat=0
- echo -n ${host}:" "
- ping -c 1 $host >&/dev/null && { ssh -t -o ConnectTimeout=1 root@$host "$CMD" 2>/dev/null && stat=1 || echo "soon..."; } || echo
- [ "$MODE" = "wait" -a $stat -eq 1 ] && list=${list/$host }
- done
- [ "$MODE" = "ones" ] && break;
- [[ "$list" =~ [a-zA-Z0-9_-] ]] && sleep 1 || break;
-done
+++ /dev/null
-#!/bin/bash
-
-# parameters
-#
-# ============================================================================
-#
-# Copyright (C) THALES. All rights reserved
-# Author: Laurent Mazet
-#
-# 2013-11-10 V1.0 : Creation
-#
-# 2013-11-20 V1.1 : L.Mazet ajout possibilite de configuration du switch
-#
-# ============================================================================
-
-DRY=
-ID=
-IP=192.168.0.1
-TRC6500_SCRIPT_DIR=$(dirname $0)
-
-# help function
-
-function usage () {
- echo "usage: $PROGNAME [-a] [-d] [-h] [-i <id>]"
- echo " -a: configure all boards"
- echo " -d: dry mode"
- echo " -h: help message"
- echo " -i: board id (from 1 to 5)"
- exit $@
- }
-
-# formating functions
-
-function title () { echo -e "\033[0;1m$*\033[0;0m"; }
-function pass () { echo -e "\033[1;32m$*\033[0;0m"; }
-function warn () { echo -e "\033[1;33m$*\033[0;0m"; }
-function fail () { echo -e "\033[1;31m$*\033[0;0m"; }
-
-# configuration values
-
-# argument processing
-
-while [ $# -gt 0 ]; do
- case "$1" in
- -a) ID=all;;
- -d) DRY=yes;;
- -h) usage 0;;
- -i) shift; ID=$1;;
- *) usage 1;;
- esac
- shift
-done
-
-# switch port configure function ()
-
-function sw_configure () {
- case "$1" in
- off) CMD="-c 'configure terminal' -c 'interface range g1/39-44' -c 'shutdown' -c end -c 'clear mac address-table dynamic' -c 'clear ip arp inspection log' -c exit";;
- on) CMD="-c 'configure terminal' -c 'interface range g1/39-44' -c 'no shutdown' -c end -c exit";;
- 1) CMD="-c 'configure terminal' -c 'interface g1/39' -c 'no shutdown' -c end -c exit";;
- 2) CMD="-c 'configure terminal' -c 'interface g1/40' -c 'no shutdown' -c end -c exit";;
- 3) CMD="-c 'configure terminal' -c 'interface g1/41' -c 'no shutdown' -c end -c exit";;
- 4) CMD="-c 'configure terminal' -c 'interface g1/42' -c 'no shutdown' -c end -c exit";;
- 5) CMD="-c 'configure terminal' -c 'interface g1/43' -c 'no shutdown' -c end -c exit";;
- 6) CMD="-c 'configure terminal' -c 'interface g1/44' -c 'no shutdown' -c end -c exit";;
- esac
-
- if [ "$DRY" = "yes" ]; then
- echo connect_switch.tcl -h swm $CMD
- else
- LOG=/tmp/$PROGNAME-$$.log
- echo -n "sw_configure $1: "
- eval $TRC6500_SCRIPT_DIR/connect_switch.tcl $CMD swm >&$LOG && pass OK || { fail KO; cat $LOG; exit 1; }
- rm -f $LOG
- fi
-}
-
-case "$ID" in
-1) CH1=0; CH2=1; CLOCKREF=external;;
-2) CH1=2; CH2=3; CLOCKREF=internal;;
-3) CH1=4; CH2=5; CLOCKREF=internal;;
-4) CH1=6; CH2=7; CLOCKREF=internal;;
-5) CH1=8; CH2=9; CLOCKREF=internal;;
-6) CH1=10; CH2=11; CLOCKREF=internal;;
-all)
- for id in $(seq 1 5); do
- title "switch off all fe306 ports"
- sw_configure off
- title "switch on port for fe306 $id"
- sw_configure $id
- title "configure fe306 $id"
- if [ "$DRY" = "yes" ]; then
- echo $(basename $0) -i $id
- else
- { $0 -i $id | mawk -W interactive '{print " " $0}'; } && pass OK || { fail KO; exit 1; }
- fi
- done
- title "switch on all fe306 ports"
- sw_configure on
- exit 0
- ;;
-*) echo "unknown fe306 id ($ID)"; exit 1;;
-esac
-
-# configure function
-
-function configure () {
- echo -n "$1 [$2 <= $3]: "
- if [ "$DRY" = "yes" ]; then
- echo wget -q -O - http://$IP/$1?$2=$3
- else
- wget -q -O - http://$IP/$1?$2=$3 >/dev/null && pass OK || { fail KO; exit 1; }
- fi
-}
-
-# setup local address
-
-title "setup local address"
-cmd="ifconfig eth1:1 192.168.0.2 netmask 255.255.255.0"
-[ "$DRY" = "yes" ] && echo $cmd || { echo -n $cmd" "; eval $cmd && pass OK || { fail KO; exit 1; }; }
-
-# check if fe306 is connected
-
-#title "check presence of $IP"
-#cmd="ping -c 1 -w 10 -W 10 $IP"
-#[ "$DRY" = "yes" ] && echo $cmd || { echo -n $cmd" "; eval $cmd >&/dev/null && pass OK || { warn KO; ifconfig eth1:1 down; exit 0; }; }
-
-# get serial number
-
-[ "$DRY" = "yes" ] && SN=00 || \
- SN=$(wget -q -O - http://$IP/versions_en.html | mawk '/MODULE/ { module = 1 } /Serial Number/ { if (module) { printf "%02X", $4; exit 0 } }')
-
-[[ "$SN" =~ ^[0-9A-F][0-9A-F]$ ]] || { echo "unknown serial number ($SN)"; exit 1; }
-
-# configure ip
-
-title "configure ip"
-
-configure ModeServ.cmd serv_mode MANUAL
-configure MacServ.cmd serv_mac 00.80.EE.00.$SN.01
-configure IpServ.cmd serv_ip $(getent hosts | awk '/fe306-'$ID'/ {print $1}')
-configure MaskServ.cmd serv_mask 255.255.255.0
-
-for i in $(seq 1 8); do
- configure MacProd$i.cmd prod_mac$i 00.80.EE.00.$SN.0$((i+1))
- configure IpProd$i.cmd prod_ip$i 10.133.26.1$ID$i
-done
-
-configure IpMulticast.cmd multicast_ip 238.0.0.0
-configure RxMulticast.cmd multicast_rx 62002
-configure TxMulticast.cmd multicast_tx 62004
-configure TTL.cmd ttl 10
-
-# configure gps
-
-title "configure gps"
-
-configure GpsRate.cmd gps_rate 19200
-configure GpsChar.cmd gps_char 8
-configure GpsStop.cmd gps_stop 1
-configure GpsParity.cmd gps_parity no
-
-# configure miscellaneous
-
-title "configure miscellaneous"
-configure BoardNum.cmd board_num $ID
-configure RackNum.cmd rack_num 1
-configure Chan1Num.cmd channel1_num $CH1
-configure Chan2Num.cmd channel2_num $CH2
-
-configure FpgaLoc.cmd fpga_loc FLASH
-configure Clk10Mhz.cmd clk_10 $CLOCKREF
-configure PllConfig.cmd pll_cfg pll_cfg_02
-
-# unset local address
-
-title "unset local address"
-cmd="ifconfig eth1:1 down"
-[ "$DRY" = "yes" ] && echo $cmd || { echo -n $cmd" "; eval $cmd && pass OK || { fail KO; exit 1; }; }
-
-# vim:set tabstop=4 shiftwidth=4 softtabstop=4:
+++ /dev/null
-#!/usr/bin/expect
-
-# ============================================================================
-#
-# Copyright (C) THALES. All rights reserved
-#
-# * V1.0 Laurent Mazet 29/04/2013
-# creation script de configuration de la matrice par ligne de commande
-# ============================================================================
-
-spawn /opt/trc6500/tools/matrix_tool
-
-set timeout 3
-
-exec ifconfig eth1:0 192.168.1.1 netmask 255.255.255.0
-
-proc cleanexit {rc} {
- exec ifconfig eth1:0 down
- exit $rc
-}
-
-expect {
- "taper la commande choisie" { send "0\r" }
- timeout { send_user "connection to $host timed out\n"; cleanexit 1 }
- eof { send_user "connection to host failed\n"; cleanexit 1 }
-}
-expect {
- "timeout detected" { send_user "can't connect on defaut ip\n"; cleanexit 1 }
- "taper la commande choisie" { send "10\r" }
-}
-
-expect "nouvelle adresse" { send "010.133.026.253\r" }
-
-expect "taper la commande choisie" { send "12\r" }
-
-expect "taper la commande choisie" { send "14\r" }
-
-cleanexit 0
-# vim:set tabstop=4 expandtab shiftwidth=4:
+++ /dev/null
-#!/usr/bin/expect
-
-# ============================================================================
-#
-# Copyright (C) THALES. All rights reserved
-# Author: Laurent Mazet
-#
-# Script de configuration du switchs
-#
-# 2013-10-10 V1.0 : Creation
-#
-# ============================================================================
-
-set host [lrange $argv 0 0]
-if { $host == "" } {
- puts "usage: configure_switch.tcl \[sw1|sw2|swg1|swg2|swm\]"
- exit 1
-}
-
-set tftpserver ""
-if { $host == "swg1" } { set tftpserver "10.133.26.160" }
-if { $host == "swg2" } { set tftpserver "10.133.26.160" }
-if { $host == "swm" } { set tftpserver "10.133.28.160" }
-if { $host == "sw1" } { set tftpserver "10.133.26.160" }
-if { $host == "sw2" } { set tftpserver "10.133.26.160" }
-if { $tftpserver == "" } { puts "unknown switch '$host'"; exit }
-
-set date [ exec date +%Y%m%d-%H:%m:%S ]
-set backup "$host-$date.txt"
-
-spawn telnet $host
-
-set timeout 30
-
-expect {
- "Password:" { send "thales\r" }
- incorrect { send_user "invalid password or account\n"; exit 1 }
- timeout { send_user "connection to $host timed out\n"; exit 1 }
- eof { send_user "connection to host failed\n"; exit 1 }
-}
-expect -exact ">" { send "enable\r" }
-expect "Password:" { send "thales\r" }
-expect "#" { send "copy running-config tftp://$tftpserver/$backup\r" }
-expect -exact "?" { send "$tftpserver\r" }
-expect -exact "?" { send "$backup\r" }
-expect "#" { send "copy tftp://$tftpserver/$host.txt startup-config\r" }
-expect -exact "?" { send "startup-config\r" }
-#expect "#" { send_user " << reload or exit ? >> "; interact }
-expect "#" { send "reload\r" }
-
-exit 0
-# vim:set tabstop=4 expandtab shiftwidth=4:
+++ /dev/null
-#!/usr/bin/expect
-
-set host [lrange $argv 0 0]
-if { $host == "" } {
- puts "usage: configure_switch_bootstrap.tcl \[sw1|sw2|swg1|swg2|swm\]"
- exit 1
-}
-
-set ipaddress ""
-if { $host == "swg1" } { set ipaddress "10.133.26.231" }
-if { $host == "swg2" } { set ipaddress "10.133.26.232" }
-if { $host == "swm" } { set ipaddress "10.133.28.231" }
-if { $host == "sw1" } { set ipaddress "10.133.26.231" }
-if { $host == "sw2" } { set ipaddress "10.133.26.232" }
-if { $ipaddress == "" } { puts "unknown switch '$host'""; exit 1 }
-
-spawn screen -c . /dev/ttyUSB0
-
-set timeout 5
-
-set state 0
-while { $state != 1 } {
- expect {
- timeout { send "\r" }
- -exact ">" { send "enable\r" }
- "#" { set state 1 }
- "Password:" { send "thales\r" }
- eof { send_user "connection to host failed\n"; exit 1 }
- }
-}
-
-send "configure terminal\r"
-expect "#" { send "interface vlan 1\r" }
-expect "#" { send "ip address $ipaddress 255.255.255.0\r" }
-expect "#" { send "exit\r" }
-expect "#" { send "line vty 0 4\r" }
-expect "#" { send "password thales\r" }
-expect "#" { send "enable password thales\r" }
-expect "#" { send "end\r" }
-
-# quit switch connection
-expect "#" { send "exit\r" }
-
-# to quit screen we need to send C-a \.
-send "\001\\"
-expect "kill all your windows" { send "y\r" }
-
-exit 0
-# vim:set tabstop=4 expandtab shiftwidth=4:
+++ /dev/null
-#!/usr/bin/expect
-
-# ============================================================================
-#
-# Copyright (C) THALES. All rights reserved
-# Author: Laurent Mazet
-#
-# Script de connection au switchs
-#
-# 2013-10-10 V1.0 : Creation
-#
-# 2014-03-05 V1.1 : LMa ajout de passage de commande CISCO en parametre
-#
-# 2014-06-10 V1.2 : LMa ajout d'un fichier de commandes
-#
-# ============================================================================
-
-# default value
-set adminpassword "thales"
-set cmd {}
-set host ""
-set loginpassword "thales"
-set prompt "SW*"
-
-proc usage {rc} {
- puts "usage: connect_switch.tcl \[host\] \[-a adminpassword\] \[-c command\] \[-f file\] \[-h\] \[-l loginpassword\] \[-p prompt\]"
- exit $rc
-}
-
-# process argument
-set action ""
-for {set i 0} {$i < [llength $argv]} {incr i} {
- set arg [lindex $argv $i]
- switch $arg {
- -a { set action "-adminpassword" }
- -c { set action "-cmd" }
- -f { set action "-file" }
- -h { usage 0 }
- -l { set action "-loginpassword" }
- -p { set action "-prompt" }
- default {
- switch $action {
- -adminpassword { set adminpassword $arg }
- -cmd { set cmd [lappend cmd $arg] }
- -file {
- if {[file isfile $arg] == 1} then {
- set f [open $arg "r"]
- set data [read $f]
- close $f
- foreach line [split $data "\n"] {
- set cmd [lappend cmd $line]
- }
- } else {
- puts "can't open file '$arg'"
- exit 1
- }
- }
- -loginpassword { set loginpassword $arg }
- -prompt { set prompt $arg }
- default { set host $arg }
- }
- set action ""
- }
- }
-}
-if {$action != ""} {
- puts "missing arguments"
- exit 1
-}
-if { $host == "" } {
- usage 1
-}
-
-# start connection
-spawn telnet $host
-
-# login password
-expect {
- "Password:" { send "$loginpassword\r" }
- timeout { send_user "connection to host failed\n"; exit 1 }
- eof { send_user "connection to host failed\n"; exit 1 }
-}
-
-# admin password
-expect {
- "$prompt>" { send "enable\r" }
- timeout { send_user "connection to host failed\n"; exit 1 }
- "Password:" { send_user "invalid login password\n"; exit 1 }
-}
-expect "Password:" { send "$adminpassword\r" }
-expect {
- "$prompt#" { send "\r" }
- "Password:" { send_user "invalid admin password\n"; exit 1 }
-}
-
-# commands or interactive mode
-if {[llength $cmd] == 0 } {
- expect "$prompt#" { interact }
-} else {
- expect "$prompt#" { send "terminal length 0\r" }
- for {set i 0} {$i < [llength $cmd]} {incr i} {
- expect {
- "$prompt#" { send "[lindex $cmd $i]\r" }
- "confirm" { send "\r"; continue }
- }
- }
- expect {
- "confirm" { send "\r"; expect "$prompt" { send "exit\r" } }
- "$prompt" { send "exit\r" }
- }
- send_user "\n"
-}
-
-exit 0
-# vim:set tabstop=4 shiftwidth=4 softtabstop=4:
+++ /dev/null
-#!/usr/bin/perl
-
-open PROC_STAT, "</proc/stat";
-my @proc_stat=<PROC_STAT>;
-close PROC_STAT;
-my @cpu_stat_t0 = grep {s/^cpu\d+\s//} (@proc_stat);
-sleep 1;
-open PROC_STAT, "</proc/stat";
-my @proc_stat=<PROC_STAT>;
-close PROC_STAT;
-my @cpu_stat_t1 = grep {s/^cpu\d+\s//} (@proc_stat);
-
-my $total = 0;
-for (my $cpu_i=0; $cpu_i<(scalar @cpu_stat_t0); $cpu_i++) {
- my @stat_t0 = split /\s+/, $cpu_stat_t0[$cpu_i];
- my @stat_t1 = split /\s+/, $cpu_stat_t1[$cpu_i];
- my ($t0_idle, $t1_idle) = ($stat_t0[3], $stat_t1[3]);
- my ($t0_total, $t1_total) = (0, 0);
- $t0_total += $_ foreach @stat_t0;
- $t1_total += $_ foreach @stat_t1;
-
- my $load = ($t1_total - $t0_total == 0) ? 100: int((100 * (($t1_total - $t0_total) - ($t1_idle - $t0_idle))/($t1_total - $t0_total)) + 0.5);
- print " +" unless ($cpu_i == 0);
- printf "% 5.1f%% ", $load;
- $total += $load;
-}
-printf " = % 6.1f%%\n", $total;
+++ /dev/null
-#!/bin/bash
-
-# parameters
-#
-# ============================================================================
-#
-# Copyright (C) THALES. All rights reserved
-# Author: Laurent Mazet
-#
-# 2014-10-06 V1.0 : Creation
-#
-# ============================================================================
-
-DRY=
-FIRMWARE=/opt/trc6500/config/code_metier/libHwCtrl/Bitstream
-LIST="application.out production.bin ts12_fp_pano.bin ts22_fp_pano.bin firmware.out"
-HOST=
-TRC6500_SCRIPT_DIR=$(dirname $0)
-
-# help function
-
-function usage () {
- echo "usage: $PROGNAME [-d] [-f dir] [-h] [-i host] [-l list]"
- echo " -d: dry mode"
- echo " -f: firmware directory ($FIRMWARE)"
- echo " -h: help message"
- echo " -i: board hostname (or ip)"
- echo " -l: list of firmware ($LIST)"
- exit $@
- }
-
-# formating functions
-
-function title () { echo -e "\033[0;1m$*\033[0;0m"; }
-function pass () { echo -e "\033[1;32m$*\033[0;0m"; }
-function warn () { echo -e "\033[1;33m$*\033[0;0m"; }
-function fail () { echo -e "\033[1;31m$*\033[0;0m"; }
-
-# argument processing
-
-while [ $# -gt 0 ]; do
- case "$1" in
- -d) DRY=yes;;
- -f) shift; FIRMWARE=$1;;
- -h) usage 0;;
- -i) shift; HOST=$1;;
- -l) shift; LIST=$1;;
- *) usage 1;;
- esac
- shift
-done
-
-# check host
-
-[ "$HOST" ] || ping -c 1 $HOST >&/dev/null || \
- { fail "Can't connect '$HOST'"; exit 1; }
-
-# check firmware
-
-for f in $LIST; do
- [ -f $FIRMWARE/$f ] || { fail "Can't find '$FIRMWARE/$f'"; exit 1; }
-done
-
-# check mode
-
-protect=""
-[ "$DRY" = yes ] && protect="!echo"
-
-# flash firmware
-
-title "flash fe306 '$HOST'"
-
-ftp -n <<EOF
-open $HOST
-quote USER none
-quote PASS none
-binary
-cd flash
-$(for f in $LIST; do echo "$protect send $FIRMWARE/$f"; done)
-bye
-EOF
-
-# vim:set tabstop=4 shiftwidth=4 softtabstop=4:
+++ /dev/null
-#!/usr/bin/expect
-
-# ============================================================================
-#
-# Copyright (C) THALES. All rights reserved
-# Author: Laurent Mazet
-#
-# Script de connection au switchs
-#
-# 2014-10-06 V1.0 : Creation
-#
-# ============================================================================
-
-# default value
-set blade {0}
-set host ""
-set login "admin"
-set password "thalescom02"
-set prompt "system>"
-
-proc usage {script_name rc} {
- puts "usage: [exec basename $script_name] \[host\] \[-b blade\] \[-h\] \[-l login\] \[-p password\] \[-x prompt\]"
- exit $rc
-}
-
-# process argument
-set action ""
-for {set i 0} {$i < [llength $argv]} {incr i} {
- set arg [lindex $argv $i]
- switch $arg {
- -b { set action "-blade" }
- -h { usage $argv0 0 }
- -l { set action "-login" }
- -p { set action "-password" }
- -x { set action "-prompt" }
- default {
- switch $action {
- -blade { set blade $arg }
- -login { set login $arg }
- -password { set password $arg }
- -prompt { set prompt $arg }
- default { set host $arg }
- }
- set action ""
- }
- }
-}
-if {$action != ""} {
- puts "missing arguments"
- exit 1
-}
-if { $host == "" } {
- usage $argv0 1
-}
-
-# start connection
-spawn telnet $host
-
-# login
-expect {
- "username:" { send "$login\r" }
- timeout { send_user "connection to host failed\n"; exit 1 }
- eof { send_user "connection to host failed\n"; exit 1 }
-}
-
-
-# password
-expect {
- "password:" { send "$password\r" }
- timeout { send_user "connection to host failed\n"; exit 1 }
- eof { send_user "connection to host failed\n"; exit 1 }
-}
-
-expect {
- "$prompt" { send "mt -b $blade\r" }
- "username:" { send_user "connection to host failed\n"; exit 1 }
-}
-
-expect {
- "OK" { send "exit\r" }
- "$prompt" { send_user "error\n"; exit 1 }
-}
-
-send_user "\n"
-exit 0
-# vim:set tabstop=4 shiftwidth=4 softtabstop=4: