Material Safety Data Sheet
WOMAN
ELEMENT: WOMAN
SYMBOL: WO’
DISCOVERED: ADAM
ATOMIC MASS: ACCEPTED AS 110 LBS. BUT KNOWN TO VARY FROM 98 TO 550 LBS.
OCCURRENCE: COPIOUS QUANTITIES IN ALL URBAN AREAS.
PHYSICAL PROPERTIES:
1. SURFACE USUALLY COVERED WITH PAINTED FILM
2. BOILS AT NOTHING, FREEZES WITHOUT REASON
3. MELTS IF GIVEN SPECIAL TREATMENT
4. BITTER IF INCORRECTLY USED
5. FOUND IN VARIOUS STATES RANGING FROM VIRGIN METAL TO COMMON ORE
6. YIELDS TO PRESSURE APPLIED TO CORRECT POINTS
CHEMICAL PROPERTIES:
1. HAS GREAT AFFINITY FOR GOLD, SILVER, PLATINUM, AND PRECIOUS STONES
2. ABSORBS GREAT QUANTITIES OF EXPENSIVE SUBSTANCES
3. MAY EXPLODE SPONTANEOUSLY IF LEFT ALONE
4. INSOLUBLE IN LIQUID, BUT ACTIVITY GREATLY INCREASED BY SATURATION IN ALCOHOL
5. MOST POWERFUL MONEY-REDUCING AGENT KNOWN TO MAN
COMMON USES:
1. HIGHLY ORNAMENTAL, ESPECIALLY IN SPORTS CARS
2. CAN BE A GREAT AID TO RELAXATION
TESTS:
1. PURE SPECIMEN TURNS ROSY PINK WHEN DISCOVERED IN NATURAL STATE
2. TURNS GREEN WHEN PLACED BESIDE A BETTER SPECIMEN
HAZARDS:
1. HIGHLY DANGEROUS EXCEPT IN EXPERIENCED HANDS
2. ILLEGAL TO POSSESS MORE THAN ONE
Cisco IPS support for rancid
In order to get rancid to collect the config from an IPS module you will need to make sure you have the correct login creds in the rancid users “.cloginrc”, add the type of ips to “rancid-fe” and you also need to create the “ipsrancid” script.
Sample addition for your “.cloginrc”. Make sure this is above anything else so no other wildcards in the “.cloginrc” get caught.
add user ips-primary rancid
add password ips-primary <<omitted>>
add method ips-primary ssh
#Needed if you aren’t using a IPS module for ASA/Switch/Etc
add userprompt ips-primary nouserpromptexists
Changes required for “rancid-fe”.
Create the “ipsrancid” script as “<rancid_home>/bin/ipsrancid”. Make sure you “chmod 755 <rancid_home>/bin/ipsrancid” and “chown <rancid_user>:<rancid_user_group> <rancid_home>/bin/ipsrancid”.
##
## Copyright (C) 1997-2004 by Terrapin Communications, Inc.
## All rights reserved.
##
## This software may be freely copied, modified and redistributed
## without fee for non-commerical purposes provided that this license
## remains intact and unmodified with any RANCID distribution.
##
## There is no warranty or other guarantee of fitness of this software.
## It is provided solely "as is". The author(s) disclaim(s) all
## responsibility and liability with respect to this software’s usage
## or its effect upon hardware, computer systems, other software, or
## anything else.
##
## Except where noted otherwise, rancid was written by and is maintained by
## Henry Kilmer, John Heasley, Andrew Partan, Pete Whiting, and Austin Schutz.
##
#
# hacked version of Hank’s rancid - this one tries to deal with Hitachi’s.
#
# Modified again by Lance Vermilion (11/13/08)
# Modified from htrancid by Jeremy M. Guthrie
# Created on 5/4/2007
#
# This is meant to try handle Cisco’s IPS V5.X line and on
#
# RANCID - Really Awesome New Cisco confIg Differ
#
# usage: ipsrancid [-d] [-l] [-f filename | $host]
use Getopt::Std;
getopts(‘dfl’);
$log = $opt_l;
$debug = $opt_d;
$file = $opt_f;
$host = $ARGV[0];
$clean_run = 0;
$found_end = 0;
$timeo = 90; # clogin timeout in seconds
my(@commandtable, %commands, @commands);# command lists
my(%filter_pwds); # password filtering mode
# This routine is used to print out the router configuration
sub ProcessHistory {
($new_hist_tag,$new_command,$command_string, @string) = (@_);
if ((($new_hist_tag ne $hist_tag) || ($new_command ne $command))
&& defined %history) {
print eval "$command \%history";
undef %history;
}
if (($new_hist_tag) && ($new_command) && ($command_string)) {
if ($history{$command_string}) {
$history{$command_string} = "$history{$command_string}@string";
} else {
$history{$command_string} = "@string";
}
} elsif (($new_hist_tag) && ($new_command)) {
$history{++$#history} = "@string";
} else {
print "@string";
}
$hist_tag = $new_hist_tag;
$command = $new_command;
1;
}
sub numerically { $a <=> $b; }
# This is a sort routine that will sort numerically on the
# keys of a hash as if it were a normal array.
sub keynsort {
local(%lines) = @_;
local($i) = 0;
local(@sorted_lines);
foreach $key (sort numerically keys(%lines)) {
$sorted_lines[$i] = $lines{$key};
$i++;
}
@sorted_lines;
}
# This is a sort routine that will sort on the
# keys of a hash as if it were a normal array.
sub keysort {
local(%lines) = @_;
local($i) = 0;
local(@sorted_lines);
foreach $key (sort keys(%lines)) {
$sorted_lines[$i] = $lines{$key};
$i++;
}
@sorted_lines;
}
# This is a sort routine that will sort on the
# values of a hash as if it were a normal array.
sub valsort{
local(%lines) = @_;
local($i) = 0;
local(@sorted_lines);
foreach $key (sort values %lines) {
$sorted_lines[$i] = $key;
$i++;
}
@sorted_lines;
}
# This is a numerical sort routine (ascending).
sub numsort {
local(%lines) = @_;
local($i) = 0;
local(@sorted_lines);
foreach $num (sort {$a <=> $b} keys %lines) {
$sorted_lines[$i] = $lines{$num};
$i++;
}
@sorted_lines;
}
# This is a sort routine that will sort on the
# ip address when the ip address is anywhere in
# the strings.
sub ipsort {
local(%lines) = @_;
local($i) = 0;
local(@sorted_lines);
foreach $addr (sort sortbyipaddr keys %lines) {
$sorted_lines[$i] = $lines{$addr};
$i++;
}
@sorted_lines;
}
# These two routines will sort based upon IP addresses
sub ipaddrval {
my(@a) = ($_[0] =~ m#^(\d+)\.(\d+)\.(\d+)\.(\d+)$#);
$a[3] + 256 * ($a[2] + 256 * ($a[1] +256 * $a[0]));
}
sub sortbyipaddr {
&ipaddrval($a) <=> &ipaddrval($b);
}
# This routine parses "show config"
sub ShowConfig {
print STDERR " In ShowConfig: $_" if ($debug);
$firstexit=0;
while (<INPUT>) {
tr/\015//d;
tr/\020//d;
#strip out the stupid spinning running-config progress thingy
s/Generating current config: \.*[\|\/\-\\]//gi;
$skipprocess=0;
#sometimes an ‘exit’ appears at the top of the config, we don’t want them
if ( (/^exit/) && ( ! $firstexit ) ) {
$firstexit=1;
$skipprocess=1;
}
#remove spaces left over from lame spinning progress thingy
if ( /^\s+! ——————————/ ) {
s/^\s+!/!/g
}
if (/^(read-only-community) / && $filter_pwds >= 1) {
ProcessHistory("","","","!$1 <removed>\n"); next;
}
if (/^(read-write-community) / && $filter_pwds >= 1) {
ProcessHistory("","","","!$1 <removed>\n"); next;
}
if (/^(trap-community-name) / && $filter_pwds >= 1) {
ProcessHistory("","","","!$1 <removed>\n"); next;
}
if (/^(ntp-keys \d+ md5-key) / && $filter_pwds >= 1) {
ProcessHistory("","","","!$1 <removed>\n"); next;
}
if (/^(password) / && $filter_pwds >= 1) {
ProcessHistory("","","","!$1 <removed>\n"); next;
}
last if (/^$prompt/);
next if (/^(\s*|\s*$cmd\s*)$/);
if ( ! /^$prompt/) {
if ( ! $skipprocess ) {
print STDOUT " ShowConfig Data: $_" if ($debug);
ProcessHistory("","","","$_");
}
}
}
$clean_run=1;
print STDERR " Exiting ShowConfig: $_" if ($debug);
return(0);
}
# This routine parses single command’s that return no required info
sub ShowVersion {
print STDERR " In ShowVersion: $_" if ($debug);
ProcessHistory("","","","!\n!IPS Show Version Start\n");
while (<INPUT>) {
tr/\015//d;
$skipprocess=0;
if ( /^Sensor up-time/ ) { $skipprocess=1; }
if ( ( /using.*bytes of available/i ) ) { $skipprocess=1; }
last if (/^$prompt/);
next if (/^(\s*|\s*$cmd\s*)$/);
if ( ! /^$prompt/) {
if ( ! $skipprocess ) {
print STDOUT " ShowVersion Data: $_" if ($debug);
ProcessHistory("","","","! $_");
}
}
}
ProcessHistory("","","","!\n!IPS Show Version End\n");
print STDERR " Exiting ShowVersion: $_" if ($debug);
return(0)
}
# This routine parses single command’s that return no required info
sub ShowUsersAll {
print STDERR " In ShowUsersAll: $_" if ($debug);
ProcessHistory("","","","!\n!IPS User Database Start\n");
while (<INPUT>) {
tr/\015//d;
$skipprocess=0;
s/^ CLI ID //g;
s/^ //g;
s/^\* +[0-9]+ +//g;
last if (/^$prompt/);
next if (/^(\s*|\s*$cmd\s*)$/);
if ( ! /^$prompt/) {
if ( ! $skipprocess ) {
print STDOUT " ShowUsersAll Data: $_" if ($debug);
ProcessHistory("","","","!$_");
}
}
}
ProcessHistory("","","","!\n!IPS User Database End\n!\n!\n");
print STDERR " Exiting ShowUsersAll: $_" if ($debug);
return(0)
}
# dummy function
sub DoNothing {print STDOUT;}
# Main
@commandtable = (
{’show version’ => ‘ShowVersion’},
{’show users all’ => ‘ShowUsersAll’},
{’show configuration’ => ‘ShowConfig’}
);
# Use an array to preserve the order of the commands and a hash for mapping
# commands to the subroutine and track commands that have been completed.
@commands = map(keys(%$_), @commandtable);
%commands = map(%$_, @commandtable);
$cisco_cmds=join(";",@commands);
$cmds_regexp=join("|",@commands);
open(OUTPUT,">$host.new") || die "Can’t open $host.new for writing: $!\n";
select(OUTPUT);
# make OUTPUT unbuffered if debugging
if ($debug) { $| = 1; }
# The IPS doesn’t like the TERM of network so we must change it
if ( $ENV{TERM} eq ‘network’ ) {
$ENV{TERM} = ‘vt100′;
}
if ($file) {
print STDERR "opening file $host\n" if ($debug);
print STDOUT "opening file $host\n" if ($log);
open(INPUT,"<$host") || die "open failed for $host: $!\n";
} else {
print STDERR "executing clogin -t $timeo -c\"$cisco_cmds\" $host\n" if ($debug);
print STDOUT "executing clogin -t $timeo -c\"$cisco_cmds\" $host\n" if ($log);
if (defined($ENV{NOPIPE})) {
system "clogin -t $timeo -c \"$cisco_cmds\" $host </dev/null > $host.raw 2>&1" || die "clogin failed for $host: $!\n";
open(INPUT, "< $host.raw") || die "clogin failed for $host: $!\n";
} else {
open(INPUT,"clogin -t $timeo -c \"$cisco_cmds\" $host </dev/null |") || die "clogin failed for $host: $!\n";
}
}
# Change the TERM back to network
if ( $ENV{TERM} eq ‘vt100′ ) {
$ENV{TERM} = ‘network’;
}
# determine password filtering mode
if ($ENV{"FILTER_PWDS"} =~ /no/i) {
$filter_pwds = 0;
} elsif ($ENV{"FILTER_PWDS"} =~ /all/i) {
$filter_pwds = 2;
} else {
$filter_pwds = 1;
}
ProcessHistory("","","","!RANCID-CONTENT-TYPE: ipsrancid\n!\n");
TOP: while(<INPUT>) {
tr/\015//d;
#strip out the stupid spinning running-config progress thingy
s/Generating current config: \.*[\|\/\-\\]//gi;
if (/^.*logout$/) {
$clean_run=1;
last;
}
if (/^Error:/) {
print STDOUT ("$host clogin error: $_");
print STDERR ("$host clogin error: $_") if ($debug);
$clean_run=0;
last;
}
while (/($cmds_regexp)/) {
$cmd = $1;
if (!defined($prompt)) {
$prompt = ($_ =~ /^([^#]+#)/)[0];
$prompt =~ s/([][}{)(\\])/\\$1/g;
print STDERR ("PROMPT MATCH: $prompt\n") if ($debug);
}
print STDERR ("IPS COMMAND:$_") if ($debug);
if (! defined($commands{$cmd})) {
print STDERR "$host: found unexpected command - \"$cmd\"\n";
$clean_run = 0;
last TOP;
}
$rval = &{$commands{$cmd}};
delete($commands{$cmd});
if ($rval == -1) {
$clean_run = 0;
last TOP;
}
}
}
print STDOUT "Done $logincmd: $_\n" if ($log);
# Flush History
ProcessHistory("","","","");
# Cleanup
close(INPUT);
close(OUTPUT);
if (defined($ENV{NOPIPE})) {
unlink("$host.raw") if (! $debug);
}
# check for completeness
if (scalar(%commands) || !$clean_run ) {
if (scalar(%commands)) {
printf(STDOUT "$host: missed cmd(s): %s\n", join(‘,’, keys(%commands)));
printf(STDERR "$host: missed cmd(s): %s\n", join(‘,’, keys(%commands))) if ($debug);
}
if (!$clean_run ) {
print STDOUT "$host: End of run not found\n";
print STDERR "$host: End of run not found\n" if ($debug);
system("/usr/bin/tail -1 $host.new");
}
unlink "$host.new" if (! $debug);
}
How to add a button to your wordpress default WYSIWYG
First you will need to edit your default javascript file called “quicktags.js”.
Find something that looks like the entry below. This will be your Bold or if you prefer HTML language strong button.
new edButton(’ed_strong’
,’b’
,’<strong>’
,’</strong>’
,’b’
);
You can add anything after that or before that. For example I use WP-CodeBox for all of my code entries. It puts them in these pretty boxes with some nice features if I encase my code in a pre statement and tell it what type of language. So I simply added a new button called pre and adds the pre statement to the beginning and to the end of the highlighted text. I also told it to define the language by default as just text.
Please note WP-CodeBox will not handle HTML pre syntax so I have modified it like so.
< pre lang=" text "> < /pre>.
iSCSI init script supporting MySQL checking
Here is a iSCSI init script for CentOS 5.x. I presume it will work on all flavors of Linux, but haven’t tested. This init script is the original init script but modified to support checking for MySQL databases that might be using the iSCSI mounted disk. So we do not want to umount the iSCSI disk while MySQL is running. I also added checks to see if iscsid is actually running, if it is then make sure you are not already logged in. If you are then don’t try to login again. Also once iSCSI is successfully started we want to mount the iSCSI disk so it is available.
*NOTE: Make sure to adjust your boot init setup. Normally mysql will start before iscsi and iscsid EXCEPT for init 5. Which by default init 5 is the only level which will start mysqld. If you have changed this or yours if not the same make sure you account for this.
iscsi 0:off 1:off 2:off 3:on 4:on 5:on 6:off
iscsid 0:off 1:off 2:off 3:on 4:on 5:on 6:off
mysqld 0:off 1:off 2:off 3:off 4:off 5:on 6:off
init level 3
K36mysqld -> ../init.d/mysqld
S07iscsid -> ../init.d/iscsid
S13iscsi -> ../init.d/iscsi
init level 5
S07iscsid -> ../init.d/iscsid
S13iscsi -> ../init.d/iscsi
S64mysqld -> ../init.d/mysqld
/etc/init.d/iscsi
#
# chkconfig: 345 13 89
# description: Logs into iSCSI targets needed at system startup
#
# Source function library.
. /etc/init.d/functions
PATH=/sbin:/bin:/usr/sbin:/usr/bin
RETVAL=0
start()
{
status iscsid > /dev/null 2>&1
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
/etc/init.d/iscsid start
fi
status iscsid > /dev/null 2>&1
RETVAL=$?
#
# Verify iscsi is logged in to the iscsi disk
# and iscsid is actually running.
#
iscsiadm -m session -R > /dev/null 2>&1
iscsiadmcheck=$?
if [ $RETVAL -eq 0 ]; then
if [ $iscsiadmcheck -ne "0" ]; then
echo -n $"Setting up iSCSI targets: "
# this script is normally called from startup so log into
# nodes marked node.startup=automatic
iscsiadm -m node –loginall=automatic
touch /var/lock/subsys/iscsi
success
echo
sleep 5
mount -a -O _netdev
else
action $"iscsid: " /bin/true
echo "iscsi: [ is running ]"
fi
else
action $"Starting iscsid: " /bin/false
RETVAL=1
fi
}
stop()
{
rm -f /var/lock/subsys/iscsi
# If this is a final shutdown/halt, do nothing since
# lvm/dm, md, power path, etc do not always handle this
if [ "$RUNLEVEL" = "6" -o "$RUNLEVEL" = "0" -o "$RUNLEVEL" = "1" ]; then
success
return
fi
# Do NOT turn off iscsi if root is possibly on a iscsi disk
rootopts=$(awk ‘{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $4; }}’ /etc/mtab)
if [[ "$rootopts" =~ "_netdev" ]] ; then
action $"Stopping iscsid: " /bin/false
echo $"Can not shutdown iSCSI. Root is on a iSCSI disk."
exit 1
fi
#
# MySQL checking. If MySQL loads a DB from an iscsi disk we need to make sure
# MySQL is NOT running before we shutdown iscsi and umount the iscsi disk.
#
mysqlopts=$(awk ‘{ if ( $1 ~ /^datadir/ ) { gsub("datadir=", "", $1); print $1; } }’ /etc/my.cnf)
iscsiopts=$(awk -v mysqlopts=$mysqlopts ‘{ if ($1 !~ /^[ \t]*#/ && $2 != "/" && mysqlopts ~ $2 ) { print $4; }}’ /etc/mtab)
/etc/init.d/mysqld status > /dev/null 2>&1
mysqlcheck=$?
if [[ "$iscsiopts" =~ "_netdev" ]] ; then
if [ "$mysqlcheck" -eq 0 ]; then
action $"Stopping iscsid: " /bin/false
echo "Can not shutdown iSCSI. MySQL is mounted on a iSCSI disk."
exit 1
fi
fi
iscsiadm -m node –logoutall=all
/etc/init.d/iscsid stop
success
status iscsid > /dev/null 2>&1
RETVAL=$?
iscsiadm -m session -R > /dev/null 2>&1
iscsiadmcheck=$?
if [[ "$iscsiadmcheck" -ne 0 && $RETVAL -ne 0 ]]; then
umount -a -O _netdev
else
action $"Stopping iscsid: " /bin/false
echo "iSCSI did NOT logout successfully"
RETVAL=1
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status iscsid
RETVAL=$?
;;
condrestart)
[ -f /var/lock/subsys/iscsi ] && restart
;;
*)
echo $"Usage: $0 {start|stop|restart|status|condrestart}"
exit 1
esac
exit $RETVAL
/etc/init.d/iscsid
#
# chkconfig: 345 7 89
# description: Starts and stops the iSCSI daemon.
#
# processname: iscsid
# pidfile: /var/run/iscsid.pid
# config: /etc/iscsi/iscsid.conf
# Source function library.
. /etc/init.d/functions
PATH=/sbin:/bin:/usr/sbin:/usr/bin
RETVAL=0
start()
{
echo -n $"Turning off network shutdown. "
# we do not want iscsi or network to run during system shutdown
# incase there are RAID or multipath devices using
# iscsi disks
chkconfig –level 06 network off
rm /etc/rc0.d/*network
rm /etc/rc6.d/*network
echo -n $"Starting iSCSI daemon: "
modprobe -q iscsi_tcp
modprobe -q ib_iser
daemon iscsid
RETVAL=$?
echo
[ $RETVAL -eq 0 ] || return
touch /var/lock/subsys/iscsid
success
echo
sleep 5
}
stop()
{
rm -f /var/lock/subsys/iscsid
# If this is a final shutdown/halt, do nothing since
# we may need iscsid for as long as possible (halt script kills
# us at the last second)
if [ "$RUNLEVEL" = "6" -o "$RUNLEVEL" = "0" -o "$RUNLEVEL" = "1" ]; then
success
return
fi
# don‘t turn off iscsi if root is possibly on a iscsi disk
rootopts=$(awk ‘{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $4; }}‘ /etc/mtab)
if [[ "$rootopts" =~ "_netdev" ]] ; then
echo $"Can not shutdown iSCSI. Root is on a iSCSI disk."
exit 1
fi
mysqlopts=$(awk ‘{ if ( $1 ~ /^datadir/ ) { gsub("datadir=", "", $1); print $1; } }‘ /etc/my.cnf)
iscsiopts=$(awk -v mysqlopts=$mysqlopts ‘{ if ($1 !~ /^[ \t]*#/ && $2 != "/" && mysqlopts ~ $2 ) { print $4; }}‘ /etc/mtab)
/etc/init.d/mysqld status > /dev/null 2>&1
mysqlcheck=$?
if [[ "$iscsiopts" = "rw,_netdev" ]] ; then
if [ "$mysqlcheck" -eq 0 ]; then
echo "Can not shutdown iSCSI. MySQL is on a iSCSI disk."
exit 1
fi
fi
echo -n $"Stopping iSCSI daemon: "
# iscsid does not have a nice shutdown process.
# It really should never be stopped
#pkill -KILL iscsid
killproc iscsid
echo
modprobe -r ib_iser 2>/dev/null
modprobe -r iscsi_tcp 2>/dev/null
}
restart()
{
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status iscsid
RETVAL=$?
;;
condrestart)
[ -f /var/lock/subsys/iscsid ] && restart
;;
*)
echo $"Usage: $0 {start|stop|restart|status|condrestart}"
exit 1
esac
exit $RETVAL