Linux: Fedora 25 major package versions

Fedora 25 has these versions of some core packages:

Package Version
Apache 2.4.23
GCC 6.2.1
Kernel 4.8.6
Perl 5.24.0
PHP 7.0.12
Vim 7.4.1989
Leave A Reply

Speed of various computer components

A CPU cycle can be a quarter of a nanosecond.
A read from RAM is about 60 nanoseconds.
A read from a relatively fast modern SSD is 20 microseconds (20,000 nanoseconds).
A read from a slow disk is 10 milliseconds (10,000,000 nanoseconds).

Borrowed and summarized from Leah Hanson

Leave A Reply

Cisco: Monitor temperature via SNMP

I need to monitor the temperature of some Cisco equipment via SNMP. Using this guide as a reference I was able configure Nagios to monitor the ambient (inlet) temperature in our data center.

First you'll need to find the sensor's ID number based on the description here:

snmpwalk -v 2c -On -c public router.domain.com .1.3.6.1.2.1.47.1.1.1.1.2

You should get a long list of various parts of your router. The last section of the OID is the ID of that particular sensor. Usually they are in the thousands. After that you look at another section of the SNMP tree to gather the actual temperature:

snmpget -v 2c -On -c public router.domain.com .1.3.6.1.4.1.9.9.91.1.1.1.1.4.XXXX

or view all of the sensors:

snmpwalk -v 2c -On -c public router.domain.com .1.3.6.1.4.1.9.9.91.1.1.1.1.4
Leave A Reply

Linux: Remote desktop client

For a long time I have used rdesktop on Linux to connect to remote Windows boxes. Redhat is deprecating rdesktop because it does not the support modern encryption technologies that Window uses. Instead they are recommending that users switch to xfreerdp. Here is the syntax you'll need to use to connect to a remote Windows server:

xfreerdp /u:Administrator /v:10.1.8.93
Leave A Reply

Linux: Build a base VM image

When a new version of a distro comes out I like to build a base VM image that I can use later to turn up new VMs quicker. Here are the steps I use on a CentOS or Fedora VM image:

  1. Install minimal system via GUI
  2. Install default packages
  3. Setup Vim config
  4. Disable/remove SELinux
  5. Setup default bash prompt
  6. Remove SSH keys
    1. rm /etc/ssh/*key*
    2. New keys will be generated on boot
  7. Set generic hostname
  8. Remove mac address line from network config
  9. Remove chrony
  10. Install/enable NTP
  11. Set grub default boot time to two seconds
  12. Disable Firewalld
  13. Enable iptables
  14. Shutdown VM and archive the disk image
Leave A Reply

Linux: write a network image to an SD card

If you have a fast network connection you can read an ISO directly from the Internet and write to a flash drive, or SD card. Just pipe curl to dd (requires root) and you're done.

curl ftp://mirror.web-ster.com/centos/7.2.1511/isos/x86_64/CentOS-7-x86_64-NetInstall-1511.iso | sudo dd of=/dev/sde bs=1M
Leave A Reply

RSYSLOG: Check the configuration

If you want to verify the syntax of your rsyslog configuration before you restart the process use the following command.

rsyslogd -N1

You will get some textual output as well an appropriate exit code.

Leave A Reply

OpenSSL: Generate self-signed certificates

OpenSSL can generate self-signed SSL certificates easily. Just run the following command:

openssl req -x509 -nodes -sha256 -days 3650 -newkey rsa:2048 -keyout domain.key -out domain.crt
Leave A Reply

Postfix: relay local mail through a remote SMTP server

You can configure Postfix to deliver mail by relaying it through your ISPs mail server instead trying to handle it yourself. This can be helpful to work around IP blocks, reverse DNS limitations, spam blocks, etc. Simply add a relayhost directive to your /etc/postfix/main.cf config file like this:

relayhost = mail.domain.com

You can also setup SMTP authentication if you SMTP server requires it.

Leave A Reply

tcpdump: Capture IPv6 router advertisements

If you want to capture and display IPv6 router advertisements with tcpdump you can use this command:

tcpdump -v -i em1 icmp6 and 'ip6[40] = 134'
Leave A Reply

Cisco: Change IPV6 SLAAC lifetimes

The default IPV6 valid lifetime for a SLAAC configured address is 30 days, and preferred lifetime is 7 days. You can change these lifetimes with this command:

conf t
int vlan 568
ipv6 nd prefix default 86400 14400

This can be used to effectively "time-out" an auto-configured address.

Leave A Reply

Perl: regular expression to check for ANSI sequences

I needed to test if a given string contains ANSI color codes. Here is the regexp I settled on to check for that:

my $ansi_color_regex = qr/\e\[[0-9]{1,3}(?:;[0-9]{1,3}){0,3}[mK]/;
if ($str =~ /$ansi_color_regex/) {
    print "String has some ANSI in it\n";
}

Alternately you can capture the color numbers with this regex:

my $ansi_color_regex = qr/(\e\[([0-9]{1,3}(;[0-9]{1,3}){0,3})[mK])/;
Leave A Reply

PHP: Disable output buffering for the CLI

When writing a PHP application that's going to be run from the CLI often you will want to disable output buffering. With output buffering enabled you will not see any output until your terminal buffer (usually 1k or 4k) fills up . This is accomplished with the following PHP code at the beginning of your script:

ob_get_flush();
Leave A Reply

CentOS: Multiple static IPV6 addresses

I needed to apply multiple static IPV6 addresses to a single interface under Fedora/CentOS. To do this you'll need to add an IPV6ADDR_SECONDARIES line to your /etc/sysconfig/network-scripts/ifcfg-eth0 so that it looks like this:

IPV6_DEFAULTGW=2001:db8::1
IPV6_AUTOCONF=no
IPV6ADDR=2001:db8::50/64
IPV6ADDR_SECONDARIES="2001:db8::40/64 2001:db8::30/64"

Note: Addresses are added in reverse order. Outbound traffic will use the last secondary IP added.

Leave A Reply

PHP: IPV6 reverse DNS entries

Reverse DNS (PTR) entries in IPV6 are different than their IPV4 counterparts. To create an IPV6 reverse entry, you have to: fully expand the address, reverse it, and add a period between each character.

For example: 2001:db8::60 reverses to 0.6.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.

I wrote a simple PHP function to handle this for me:

function ipv6_ptr($ip_str) {
    $hex = unpack("H*hex", inet_pton($ip_str));
    $str = strrev($hex['hex']);
    $p   = str_split($str);
    $ret = join(".",$p);

    return $ret;
}
Leave A Reply