MoonPoint Support Logo


Shop Amazon Warehouse Deals - Deep Discounts on Open-box and Used ProductsAmazon Warehouse Deals

Advanced Search
Sun Mon Tue Wed Thu Fri Sat
30 31          
JulAug Sep
Oct Nov Dec

Thu, Jul 27, 2017 10:33 pm

Viewing monitor information on a Windows system with DumpEDID

If you want information, e.g., the manufacturer, model, serial number, maximum resolution, display modes, etc. on a monitor connected to a Microsoft Windows system, you can use the free DumpEDID utility created by Nir Sofer of NirSoft. It's a command-line interface (CLI) utility, so you will need to run it from a command prompt. There's no installation process needed; you can extract the program from the downloaded zip file and then run it. Below is output from the program showing information for an HP S2031 monitor (the manufacturer and model number apear in the Monitor Name line) attached to a system running Windows 10.

C:\Program Files\NirSoft\dumpedid>dumpEDID
DumpEDID v1.06
Copyright (c) 2006 - 2017 Nir Sofer
Web site:

Active                   : No
Registry Key             : DISPLAY\HWP2904\1&8713bca&0&UID0
Monitor Name             : HP S2031
Serial Number            : 3CQ0311PV2
Manufacture Week         : 31 / 2010
ManufacturerID           : 61474 (0xF022)
ProductID                : 10500 (0x2904)
Serial Number (Numeric)  : 16843009 (0x01010101)
EDID Version             : 1.3
Display Gamma            : 2.20
Vertical Frequency       : 50 - 76 Hz
Horizontal Frequency     : 24 - 83 KHz
Maximum Image Size       : 44 X 25 cm (19.9 Inch)
Maximum Resolution       : 1600 X 900
Support Standby Mode     : No
Support Suspend Mode     : No
Support Low-Power Mode   : Yes
Support Default GTF      : No
Digital                  : No

Supported Display Modes  :
     720 X  400  70 Hz
     640 X  480  60 Hz
     800 X  600  60 Hz
    1024 X  768  60 Hz
    1280 X  720  60 Hz
    1440 X  900  60 Hz
    1280 X 1024  60 Hz
    1600 X  900  60 Hz


Active                   : No
Registry Key             : DISPLAY\HWP2904\4&2199b20&0&UID16843008
Monitor Name             : HP S2031
Serial Number            : 3CQ0311PV2
Manufacture Week         : 31 / 2010
ManufacturerID           : 61474 (0xF022)
ProductID                : 10500 (0x2904)
Serial Number (Numeric)  : 16843009 (0x01010101)
EDID Version             : 1.3
Display Gamma            : 2.20
Vertical Frequency       : 50 - 76 Hz
Horizontal Frequency     : 24 - 83 KHz
Maximum Image Size       : 44 X 25 cm (19.9 Inch)
Maximum Resolution       : 1600 X 900
Support Standby Mode     : No
Support Suspend Mode     : No
Support Low-Power Mode   : Yes
Support Default GTF      : No
Digital                  : No

Supported Display Modes  :
     720 X  400  70 Hz
     640 X  480  60 Hz
     800 X  600  60 Hz
    1024 X  768  60 Hz
    1280 X  720  60 Hz
    1440 X  900  60 Hz
    1280 X 1024  60 Hz
    1600 X  900  60 Hz


C:\Program Files\NirSoft\dumpedid>

[/os/windows/software/utilities/nirsoft] permanent link

Sun, Jul 23, 2017 4:43 pm

Setting the default application for a file extension in Windows 10

When you click on a file in Microsoft Windows, the operating system opens the file with whatever application, if any, that has been set as the default application to open files with the filename extension on the file. The file extension is a dot at the end of the file name followed by a sequence of other characters, often 3 characters, e.g. for myfile.doc, the extension is .doc. If some program has changed the default setting on a file type so that it now opens files with the relevant extension, but you want to revert to the application that previously opened those types of files, you can do so on a Microsoft Windows 10 system by taking the following steps:

  1. Right-click on the Windows Start button, usually in the lower, left-h and corner of the screen, then click on Settings.
  2. From the Settings window, click on Apps.
  3. Click on Default apps.
  4. In the Default apps window, scroll down until you see Choose default apps by file type and click on that text.
  5. Scroll down the list of file types until you see the one for which you wish to change the default application, e.g., .doc.
  6. Click on the the icon for the current default application shown to the right of the file type. You will then be able to choose another application to become the default application for opening files of that type, e.g., Microsoft Word for .doc files.
  7. You can then close the Settings window by clicking on the "X" at the upper, right-hand corner of the window.

[ More Info ]

[/os/windows/win10] permanent link

Sat, Jul 22, 2017 5:53 pm

Counting entries in an Excel spreadsheet by AM or PM

Microsoft Excel supports formatting timestamps in a workbook as a date followed by a time with an AM or PM value, i.e., the times are in 12-hour clock format where noon is 12:00 PM and midnight is 12:00 AM. You can select that format for a cell or column in a worksheet by highlighting the cell(s) or column (a column can be selected by clicking on the letter at the top of the column) and then clicking on Format then Cells and then clicking on Date and selecting a type of "3/14/15 1:30 PM."

If you wanted to extract just the hour from the timestamp, you can use the HOUR function, e.g. =HOUR(A1) to extract the hour value from cell A1. The hour will be displayed in 24-hour clock format, aka military time, i.e., 7:00 AM is 7 while 7:00 PM is 12 plus 7, i.e., 19; 12:00 AM (midnight) is 0 and 12:00 PM (noon) is 12.

[ More Info ]

[/software/office/excel] permanent link

Thu, Jul 20, 2017 10:49 pm

Passing a parameter to a Python script from a web page

I have a Python script that I use to process a copy of a webpage downloaded from a website and stored on my MacBook Pro laptop's hard drive to produce a CSV file from the data within that file. I was running the script from a command-line interface (CLI), i.e., a Terminal window, on the system by issuing a command like ./ inputfile outputfile where inputfile and outputfile were the file names and locations of the file holding the data and the output CSV file, respectively. I wanted to execute that script from a link on a web page, instead, so I needed a way to pass the arguments I had been passing on the command line to the Python script in the URL that I'd specify as the link on the web page. One way that you can do that for Python is explained at [Tutor] Passing Arguments to a Remote CGI Script where the following sample Python script is shown:

"""test.cgi  --- a small CGI program to show how one can pass parameters.

import cgi
fs = cgi.FieldStorage()

print "Content-type: text/plain\n"
for key in fs.keys():
    print "%s = %s" % (key, fs[key].value)

[ More Info ]

[/languages/python] permanent link

Wed, Jul 19, 2017 9:55 pm

OS X - Get File Info

On an OS X/macOS system, you may be able to determine a file's origin, i.e., where it was downloaded from, by right-clicking on the file, or clicking on it to highlight it and then hitting command-I (the command and "I" keys), in the Finder and choosing Get Info. If a "where from" field is displayed, you can see the URL from which the file was obtained if it was downloaded from a website. You can also view that information from a command-line interface (CLI), e.g., a Terminal window, using the mdls command.

[ More Info ]

[/os/os-x] permanent link

Tue, Jul 18, 2017 10:53 pm

DB Browser for SQLite upgrade to version 3.9.1 on Mac OS X

I upgraded the version of DB Browser for SQLite on my MacBook Pro today to the latest version, 3.9.1v2. Before upgrading, I had version 3.8.0 on the system. When I checked the version from a command line interface, i.e., a Terminal window, using the system_profiler command, I didn't find any references to the program when I searched for "SQLite:", but I saw the version number listed for "sqlitebrowser."

$ system_profiler SPApplicationsDataType | grep -i "SQLite:" -A 2
$ system_profiler SPApplicationsDataType | grep -i "Browser:" -A 2

      Version: 3.8.0
$ system_profiler SPApplicationsDataType | grep -i "sqlitebrowser" -A 2

      Version: 3.8.0
      Location: /Applications/
      Get Info String: DB Browser for SQLite


[ More Info ]

[/software/database/sqlite/db_browser] permanent link

Sun, Jul 16, 2017 6:54 pm

ELOG cannot open /etc/elogd.cfg error

When I attempted to add a new entry with a new category to an ELOG logbook on a Linux system, I saw the error message below:

Cannot open file /etc/elogd.cfg: Permission denied
Please use your browser's back button to go back

I checked the file permissions on the elogd.cfg configuration file and saw the following:

# ls -l /etc/elogd.cfg
-rw-r--r--. 1 root root 785 Jul 16 14:47 /etc/elogd.cfg

So only the root account had write access to the file. I then checked to see which account elogd was running under. The program lisens on port 8080 on that system. If you don't know the port that is being used for ELOG, you can find it in the /etc/elogd.cfg file. E.g.:

port = 8080

[ More Info ]

[/network/web/blogging/elog] permanent link

Sat, Jul 15, 2017 10:51 pm

Burning a CD/DVD on a Linux system with the cdrecord command

If you need to burn a CD or DVD from an ISO file from the command line on a Linux system, you can use the cdrecord command. If you include the -v argument to the program, you will see verbose information on the actions performed by the utility and the progress as it writes to the optical disc. When the program is finished you can use the eject command to eject the disc.

[ More Info ]

[/os/unix/linux/utilities/cd-dvd] permanent link

Fri, Jul 14, 2017 9:49 pm

Checking on whether email has gone to the spam folder and whitelisting in Gmail

If you suspect email that you wished to receive in the Inbox for your Gmail account has, instead, gone to the Spam folder, there are several ways to check the Spam folder in Gmail. If email you do want to read has gone into that folder, you can whitelist email from a particular sender or domain to ensure that future email from the sender(s) won't be routed to the Spam folder instead of the Inbox.

[/network/email/gmail] permanent link

Thu, Jul 13, 2017 11:00 pm

Unbanning an IP address banned with fail2ban

I needed to remove an IP address from the "jail" it was placed in by fail2ban, which is intrusion prevention sotware, due to an incorrect password being entered too many times by a legitimate user of the system during attempts to log into a CentOS Linux system that runs fail2ban. The attempted logins were made via Secure Shell (SSH). After the number of attempts with an incorrect password reached the cutoff for fail2ban to automatically ban the IP address from which the login attempts were originating, the user then got the following error message on subsequent login attempts:

$ ssh
ssh: connect to host port 22: Connection refused

The fail2ban log on the system is at /var/log/fail2ban.log. You can check that log to see which IP addresses were banned and the time any bans went into effect. So I first verified the IP address from which the login attempts were made.

# tail -n 3 /var/log/fail2ban.log
2017-07-13 21:59:06,304 fail2ban.filter         [1664]: INFO    [sshd] Found
2017-07-13 21:59:06,818 fail2ban.actions        [1664]: NOTICE  [sshd] Ban
2017-07-13 21:59:11,538 fail2ban.filter         [1664]: INFO    [sshd] Found

You can determine the name for the jail and IP address is in by issuing the command fail2ban-client status.

[ More Info ]

[/os/unix/linux] permanent link

Mon, Jul 10, 2017 10:47 pm

Viewing Partition Information on a Windows System

One way to see how disks are partitioned on a Microsoft Windws system is to view the information using Disk Management. You can start the utility from a command prompt with administrator privileges by typing diskmgmt.msc. That will provide a graphical display of the partitions on the drives in the system and externally attached to the system.

Another method is to use the diskpart command, which can be run from a command prompt - obtain a command prompt with administrator privileges. You can obtain help on using the utility by typing help at the DISKPART prompt.

[ More Info ]

[/os/windows/commands] permanent link

Sun, Jul 09, 2017 10:36 pm


If you want to determine the size of an image file on a Linux system, for some types of image files, e.g., PNG or GIF files, you can just use the file command. E.g.:

$ file ~/Documents/System_Memory.png
/home/jdoe/Documents/System_Memory.png: PNG image data, 800 x 600, 8-bit/color RGBA, non-interlaced
$ file ~/Documents/recipes/asparagus-strawberry-salad.gif
/home/jdoe/Documents/recipes/asparagus-strawberry-salad.gif: GIF image data, version 89a, 250 x 153

But if you obtain information on a JPG/JPEG file with that command, it doesn't provide any information on the dimensions of the image.

$ file ~/Documents/Winter.jpg
/home/jdoe/Documents/Winter.jpg: JPEG image data, JFIF standard 1.02

If you install the exiv2 package, you can also display the dimensions of JPEG images as well as PNG, GIF, and other image formats.

$ exiv2 /home/jdoe/Documents/Winter.jpg
File name       : /home/jdoe/Documents/Winter.jpg
File size       : 105542 Bytes
MIME type       : image/jpeg
Image size      : 800 x 600
/home/jdoe/Documents/Winter.jpg: No Exif data found in the file
$ exiv2 /home/jdoe/Documents/System_Memory.png
File name       : /home/jdoe/Documents/System_Memory.png
File size       : 135335 Bytes
MIME type       : image/png
Image size      : 800 x 600
/home/jdoe/Documents/System_Memory.png: No Exif data found in the file
$ exiv2 /home/jdoe/Documents/recipes/asparagus-strawberry-salad.gif
File name       : /home/jdoe/Documents/recipes/asparagus-strawberry-salad.gif
File size       : 31346 Bytes
MIME type       : image/gif
Image size      : 250 x 153
/home/jdoe/Documents/recipes/asparagus-strawberry-salad.gif: No Exif data found in the file

[ More Info ]

[/os/unix/programs/graphics] permanent link

Sat, Jul 08, 2017 10:57 pm

Finding files modified today

On Unix-like operating systems, such as Linux or OS X/macOS system, you can use the find command to locate files based on specified criteria. If you want to see just those files modified within the last day, you can use a command such as the one below:
$ find /home/jdoe/Documents -mtime -1 -type f -print

The command above would list those files created within the /home/jdoe/Documents directory and its subdirectories that were created in the last day, which is specified with -mtime -1. The mtime references a file's modification time and the minus one indicates you only want to see those files created today; -type f indicates you are only interested in files, not directories or other objects while -print indicates you want find to display the names of the files it finds that match the specified criteria. Note: this method will show files created within the last 24 hours, not just those created since the start of the current day at midnight the previous night. An alternative method, to see just those files created or modified since the beginning of the current day, is to specify today's date with -newermt. E.g., if today is July 8, 2017, I could use the command below to find files with a modification time newer than the specified date:

$ find /home/jdoe/Documents -newermt 2017-07-08 -type f

That command will also show me the files in the specified directory that were created or modified today.


  1. Find man page for Linux (Centos 7)
  2. Find man page for OS X (Yosemite)

Related posts:

  1. Finding files modified on or after a date on a Linux system
    Date: January 11, 2015

[/os/unix/commands] permanent link

Fri, Jul 07, 2017 10:46 pm

Printing the error encountered with Python

In a Python script I was calling from a webpage residing on an Apache webserver, I was unable to copy a file whose location and file name were stored in the variable countfile to another file whose name and location were stored in the variable backupfile with any of the following lines of code:

shutil.copy(countfile, backupfile)
shutil.copy2(countfile, backupfile)
shutil.copyfile(countfile, backupfile)

The backup file should be stored in the same directory as countfile using the same name, but with ".bak" appended to the file name. I wasn't able to identify the cause of the problem when I just used except to print my own error message with the code below, since all I would see in the output was "Error! Unable to make a backup copy of the input file."

import shutil

backupfile = countfile + ".bak"

   # Make a backup copy of the prior file
   shutil.copy(countfile, backupfile)
except e:
   print "Error! Unable to make a backup copy of the input file."

But the explicit Python error message can be obtained by using except Exception, e as shown below:

   shutil.copy(countfile, backupfile)
except Exception,e:
   print str(e)
   print "Error! Unable to make a backup copy of the input file."

When I used that code, instead, I saw the following output for the error, which showed that the problem was with the creation of the backup file:

[Errno 13] Permission denied: '/Users/jasmith1/Documents/www/SGRS/data/SGRS_Count.csv.bak'
Error! Unable to make a backup copy of the input file.

[ More Info ]

[/languages/python] permanent link

Tue, Jul 04, 2017 10:47 pm

Determining the model and serial number of a HDD in a Linux system

If you need to know the model number and/or serial number of a hard disk drive (HDD) in a Linux system, one tool that you can use to obtain that information as well as other information on the drive is the lsblk utility, which is included in the util-linux package. E.g.:

# lsblk -o MODEL,SERIAL,SIZE,STATE --nodeps
MODEL            SERIAL            SIZE STATE
WDC WD10EZEX-00W WD-WCC6Y4ZYE4Y3 931.5G running
DVD A  DH16ACSHR 238229911623     1024M running
vmDisk-CD        13043003455      1024M running

You can see the list of arguments you can provide to the program with lsblk -h.

[ More Info ]

[/os/unix/linux/utilities/sysmgmt] permanent link

Mon, Jul 03, 2017 10:03 pm

is_null versus empty in PHP

I have a PHP script that queries an SQLite database displaying the results on a web page. There are two fields, "EC Link" and "Configs Link" in the database that can contain URLs pointing to documentation on another server, but sometimes there is no URL in the database for those fields. If there is a URL, I want to display a clickable "EC" and "Configs" links. If there is no URL in either field, I want to simply display the text, but without it being clickable to indicate that there is no URL in the database table. I was using "is_null" for that purpose as shown below:

   if (is_null($row['EC Link'])) {
       echo "EC | ";
    else {
       echo "<a href=\"" . $row['EC Link'] . "\">EC</a> | ";
    if (is_null($row['Configs Link'])) {
       echo "Configs | ";
    else {
       echo "<a href=\"" . $row['Configs Link'] . "\">Configs</a> | ";

But I found that sometimes I was seeing clickable links even though there was no URL for the EC and/or Configs documentation for a particular record in the database. When I checked the records in the relevant table in the database, I found that the fields were blank, i.e., there was no data in them, but they weren't marked as null. So, to allow for the values being either null or blank, I used an empty, instead of is_null, test.

[ More Info ]

[/languages/php] permanent link

Sun, Jul 02, 2017 11:07 pm

SUPERAntispyware Found Ask Toolbar on 2017-07-02

I scanned a Windows 10 system used by a family member on July 2, 2017 with SUPERAntispyware Free Edtion, since the system was responding more slowly than I expected even for simple actions, though the system has other antivirus software on it. The first thing that SUPERAntispyware identified was the Ask Toolbar browser extension. It showed the following information for Ask Toolbar:

Ask Toolbar


[ More Info ]

[/security/scans] permanent link

Sat, Jul 01, 2017 9:38 pm

Check the scheduled backup for the Windows 10 backup program

You can check the schedule for backups with the backup program that is included with Windows 10 by taking the following steps:
  1. Right-click on the Windows Start button.
  2. Select Control Panel.
  3. Select System and Security.
  4. Double-click on Backup and Restore (Windows 7). You will see the scheduled backup dates in the "Schedule" line, e.g., "Every Sunday at 2:00 AM."

[ More Info ]

[/os/windows/win10] permanent link

Thu, Jun 29, 2017 10:48 pm

Selecting unique column entries with SQL

If you have a MariaDB, MySQL, SQLite, etc. database that may have more than one occurrence of a value for a particular column in a table, but want to display only unique values, you can fillter out the repeated values using SELECT DISTINCT. E.g., I have a table in a database where each record, aka row, in the table holds two fields: one holds an account id (Acct) and the other a project name. An account can be associated with more than one project and any project may have many account IDs associated with it.

To produce a list of the projects in the table without listing any project more than once and to list the projects in alphabetical order, I can use the SQL statement below:

SELECT DISTINCT Project FROM Acct_Projects ORDER BY Project;

Each record, aka row, in the table holds two fields: one holds an account id (Acct) and the other a project name. For the PHP code I use to query the SQLite database that holds the data to display a list of all the projects in the table, I use the following code:


$filename   = "/Users/jasmith1/Documents/www/SGRS/SGRS.db";

$query_string = "SELECT DISTINCT Project FROM Acct_Projects ORDER BY Project";

$db_handle  = new SQLite3($filename);

$results     = $db_handle->query($query_string);

echo "<table>\n";
echo "<tr><td><b>Project</b></td></tr>\n";
while ($row = $results->fetchArray()) {
    echo "<tr><td><a href=\"project_acctids.php?project=" . 
          $row['Project']  . "\">" .  $row['Project'] . "</a></td></tr>\n";
echo "</table>\n";


I make the project displayed on each row of the HTML table a clickable link that will open another page, project_acctids.php that will, for the project that is clicked on, display all of the account ids associated with that project.

[/software/database/sql] permanent link

Sun, Jun 25, 2017 9:27 pm


On Microsoft Windows Vista and Windows Server 2003 and later systems, you can use the Integrity Control Access Control List (icacls) program to display, modify, backup and restore Access Control Lists (ACLs) for files and folders. E.g.:

C:\>icacls C:\WINDOWS\system32\mmc.exe
C:\WINDOWS\system32\mmc.exe NT SERVICE\TrustedInstaller:(F)
                            NT AUTHORITY\SYSTEM:(RX)

Successfully processed 1 files; Failed processing 0 files


In the above example, the "RX" indicates read and execute access for the file for the specified accounts.

[ More Info ]

[/os/windows/commands] permanent link

Sat, Jun 24, 2017 2:36 pm

Modifying search domain settins under OS X

If you would like to be put a system's name in your web browser, e.g., ajax, into your browser's address bar and have the system automatically append a domain name, e.g., so that the browser attempts to access, even though you just typed ajax, you can modify the Domain Name System (DNS) search domain settings. To do so on an Apple OS X/macOS system, take the following steps:

  1. Click on the Apple icon at the top, left-hand side of your screen.
  2. Choose System Preferences then Network.
  3. Select the relevant network service, such as Wi-Fi or Ethernet, then click on the Advanced button.
  4. Click on DNS.
  5. Click in the Search Domains box and then click on the "+" at the bottom of that box to add a new search domain.
  6. Type the name of the search domain, e.g.
  7. Click on OK

You can add multiple domains; domains will be searched in the order you list them with the search starting at the topmost entry and continuing down through the list of domains with the search stopping when a valid name is found.

[ More Info ]

[/os/os-x] permanent link

Fri, Jun 23, 2017 10:22 pm


On a Linux system, you can use the lscpu command to obtain information on the system's Central Processing Unit (CPU). On a CentOS Linux system, the utility is included in the util-linux package. On a CentOS system, you can install that package using the yum package management utility, if it isn't already installed, using yum install util-linux. You can check on whether the lscpu program is already present using which lscpu and, on a CentOS system or another system that uses RPM, you can use rpm -qi util-linux to determine if the util-linux package is already installed.

[ More Info ]

[/os/unix/linux/utilities/sysmgmt] permanent link

Wed, Jun 21, 2017 10:09 pm

Adding an email address to Outlook Mail's Safe Sender list

If you use an or email address and are not receiving email from someone whose email you wish to see, you may need to add the address to your safe sender's list. Otherwise, email from the sender may not even be placed in your junk email folder, but may, instead, just be discarded by Outlook Mail.

To add an email address to Outlook Mail's safe sender list, click on the gear icon at the top of the Outlook Mail window you will see after logging into your account then take the following steps:

  1. Select Options from the drop down list.
  2. Select Safe Senders.
  3. Type the email address that you wish to add as a new safe sender in the field below the pencil and trash can icons, hit Enter then click on Save.

[ More Info ]

[/network/email/hotmail] permanent link

Tue, Jun 20, 2017 10:22 pm


If you wish to monitor the top bandwidth consuming processes on a Linux system, you can use the nethogs program, which displays bandwidth usage by process. It will display the process id (PID) of the processes consuming the most bandwidth. E.g.:

NetHogs version 0.8.5

    PID USER     PROGRAM                    DEV        SENT      RECEIVED       
  19355 jim      sshd: jim@pts/0            enp1s4      0.188       0.082 KB/sec
  15022 apache   /usr/sbin/httpd            enp1s4      0.000       0.000 KB/sec
      ? root     unknown TCP                            0.000       0.000 KB/sec

  TOTAL                                                 0.188       0.082 KB/sec

The above output shows me that the two processes consuming the most bandwidth at the time the program was run had PIDs of 19355 and 15022. I can get additional information on those processes using the ps command.

$ ps 19355
19355 ?        S      0:19 sshd: jim@pts/0
$ ps 15022
15022 ?        S      0:00 /usr/sbin/httpd -DFOREGROUND

[ More Info ]

[/os/unix/linux/network] permanent link

Mon, Jun 19, 2017 9:39 pm

Wrapping text on a webpage

I query an SQLite database using PHP code on a webpage. One of the fields in the database is a "Note" field, where notes have been entered without any HTML code to format the text. When I display the notes on a webpage, I want to preserve the line breaks and paragraphs as they were typed. Since there are no <br> line break nor <p> paragraph tags on the page, I could display the text as typed using the pre tag, but the problem with just using that tag is that in cases where the a line is very long, someone would have to scroll far to the right to see the entire line on the webpage, if I just used the pre tag. However, I can specify a style for the pre tag that will result in the text wrapping at the right-edge of the browser window. E.g. <pre style="white-space: pre-wrap"> . Or, if I don't want the text displayed in the monospaced default font for the pre tag, I can apply the style to the <div> tag, instead. E.g.: <div style="white-space: pre-wrap">.

[ More Info ]

[/network/web/html] permanent link

Sat, Jun 17, 2017 8:02 pm

Clearing the counters for a port on a Cisco switch

You can view the counters for a port on a Cisco switch using the show interfaces command. E.g., if I want to check on whether cyclic redundancy check (CRC) errors have been occurring on port fa0/16, I can issue the command shown below:

Huron>show interfaces fa0/16
FastEthernet0/16 is up, line protocol is up (connected)
  Hardware is Fast Ethernet, address is 0009.e897.d290 (bia 0009.e897.d290)
  MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec,
     reliability 255/255, txload 19/255, rxload 1/255
  Encapsulation ARPA, loopback not set
  Keepalive set (10 sec)
  Full-duplex, 10Mb/s, media type is 100BaseTX
  input flow-control is unsupported output flow-control is unsupported
  ARP type: ARPA, ARP Timeout 04:00:00
  Last input never, output 00:00:00, output hang never
  Last clearing of "show interface" counters 2d17h
  Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
  Queueing strategy: fifo
  Output queue: 0/40 (size/max)
  5 minute input rate 24000 bits/sec, 40 packets/sec
  5 minute output rate 756000 bits/sec, 64 packets/sec
     46168 packets input, 4608074 bytes, 0 no buffer
     Received 1250 broadcasts (1161 multicast)
     0 runts, 0 giants, 0 throttles
     121 input errors, 16 CRC, 105 frame, 0 overrun, 0 ignored
     0 watchdog, 1161 multicast, 0 pause input
     0 input packets with dribble condition detected
     255151 packets output, 119141892 bytes, 0 underruns
     0 output errors, 0 collisions, 0 interface resets
     0 babbles, 0 late collision, 0 deferred
     0 lost carrier, 0 no carrier, 0 PAUSE output
     0 output buffer failures, 0 output buffers swapped out

[ More Info ]

[/hardware/network/switch/cisco] permanent link

Thu, Jun 15, 2017 11:26 pm

Changing the duplex setting for a port on a Cisco switch

You can determine the speed and duplex settings for a port on a Cisco switch with the show interfces port_designation status. E.g.:

Huron>show interfaces fa0/1 status

Port      Name               Status       Vlan       Duplex  Speed Type
Fa0/1                        connected    1            full     10 10/100BaseTX

Often ports will be set to autonegotiate the speed and duplex settings with the equipment connected to the port. But sometimes that autonegotiation process may not work as expected requiring you to manually set the parameters. E.g, if the piece of equipment being connected to the port on the Cisco switch is configured for a fixed mode of operation while the port on the switch is configured for autonegotiate, the speeds may be configured for matching values on both sides but there may be a duplex mismatch. As a result of that mismatch cyclic redundancy check (CRC) errors may be reported for the port on the switch. You can manually set the duplex setting by entering the enable command and then the enable password when prompted. Then enter the configure command and then enter duplex followed by full or half, e.g., duplex full.

[/hardware/network/switch/cisco] permanent link

Wed, Jun 14, 2017 11:02 pm

Installing Lynx with Homebrew

If you need a text-based web browser that doesn't require a graphical user interface (GUI), one alternative is the Lynx browser that is available for a variety of operating systems, including Linux, OS X/macOS, DOS, and Microsoft Windows. If you have the Homebrew package management software installed on a OS X/macOS system, you can use it to easily install the Lynx browser using the command brew install lynx.

Advantages to using a text-based browser such as Lynx, in addition to it not requiring a GUI, making it suitable to be run in a Terminal window, is that it doesn't support Adobe Flash, which makes it invulnerable to malware distributed through vulnerabilities in Flash. Also, because it doesn't support JavaScript nor graphics, it prevents tracking software that uses JavaScript or web bugs, aka web beacons, which can track your web browsing activities via small graphics files that will be invisible to you on a webpage, from being used to track your browsing activities. It does support HTTP cookies, though, which are also used by sites to track visitors, but Lynx will prompt you if you want to allow cookies for a site when you visit the site and has whitelisting and blacklisting capabilities. E.g., when a site tries to place a cookie on your system, Lynx will prompt you as to whether it should be allowed. You can choose from "Y/N/Always/neVer."

[ More Info ]

[/os/os-x/homebrew] permanent link

Tue, Jun 13, 2017 10:04 pm

Determining the version of Firefox on OS X

If you wish to determine the version of Firefox installed on an OS X from a command line interface (CLI), you can open a Terminal window and use the command shown below:

$ /Applications/ -v
Mozilla Firefox 45.8.0

You can also find the information in the Info.plist file found at /Applications/ The version number will be on the line following the "key" line for CFBundleGetInfoString and also after the "key" line for CFBundleShortVersionString .

        <string>Firefox 45.8.0</string>


[ More Info ]

[/os/os-x] permanent link

Mon, Jun 12, 2017 7:22 am

Can't Force Quit Firefox

Firefox (version 45.8.0) became unresponsive on my MacBook Pro running OS X El Capitan (10.11.6). I killed Firefox by clicking on the Apple icon at the top, left-hand corner of the page and selecting Force Quit and then selecting Firefox in the list of running applications and then clicking on the Force Quit button.

Force Quit Applications - Firefox

I then restarted Firefox by clicking on its icon in the Dock. The icon bounced a few times and then stopped, so I assumed Firefox was now running. But when I tried accessing it by holding down the command while repeatedely tapping the tab key to cycle through the open applications, it didn't appear. Nor did it show up in the list of running processes shown by the Activity Monitor.

[ More Info ]

[/os/os-x] permanent link

Sun, Jun 11, 2017 2:39 pm

CPU Information for a MacBook Pro (Retina, 15-inch, Mid 2015)

The sysctl command can be used on a Mac OS X/macOS system to determine some machine dependent (machdep) features, such as Central Processor Unit (CPU) features. E.g., the output of sysctl machdep.cpu run on a MacBook Pro (Retina, 15-inch, Mid 2015) system with an Intel Core i7 processor is shown below:

$ sysctl machdep.cpu
machdep.cpu.max_basic: 13
machdep.cpu.max_ext: 2147483656
machdep.cpu.vendor: GenuineIntel
machdep.cpu.brand_string: Intel(R) Core(TM) i7-4870HQ CPU @ 2.50GHz 6
machdep.cpu.model: 70
machdep.cpu.extmodel: 4
machdep.cpu.extfamily: 0
machdep.cpu.stepping: 1
machdep.cpu.feature_bits: 9221960262849657855
machdep.cpu.leaf7_feature_bits: 10155
machdep.cpu.extfeature_bits: 142473169152
machdep.cpu.signature: 263777
machdep.cpu.brand: 0
machdep.cpu.leaf7_features: SMEP ERMS RDWRFSGS TSC_THREAD_OFFSET BMI1 AVX2 BMI2 
machdep.cpu.logical_per_package: 16
machdep.cpu.cores_per_package: 8
machdep.cpu.microcode_version: 19
machdep.cpu.processor_flag: 5
machdep.cpu.mwait.linesize_min: 64
machdep.cpu.mwait.linesize_max: 64
machdep.cpu.mwait.extensions: 3
machdep.cpu.mwait.sub_Cstates: 270624
machdep.cpu.thermal.sensor: 1
machdep.cpu.thermal.dynamic_acceleration: 1
machdep.cpu.thermal.invariant_APIC_timer: 1
machdep.cpu.thermal.thresholds: 2
machdep.cpu.thermal.ACNT_MCNT: 1
machdep.cpu.thermal.core_power_limits: 1
machdep.cpu.thermal.fine_grain_clock_mod: 1
machdep.cpu.thermal.package_thermal_intr: 1
machdep.cpu.thermal.hardware_feedback: 0
machdep.cpu.thermal.energy_policy: 1
machdep.cpu.xsave.extended_state: 7 832 832 0
machdep.cpu.xsave.extended_state1: 1 0 0 0
machdep.cpu.arch_perf.version: 3
machdep.cpu.arch_perf.number: 4
machdep.cpu.arch_perf.width: 48
machdep.cpu.arch_perf.events_number: 7 0
machdep.cpu.arch_perf.fixed_number: 3
machdep.cpu.arch_perf.fixed_width: 48
machdep.cpu.cache.linesize: 64
machdep.cpu.cache.L2_associativity: 8
machdep.cpu.cache.size: 256
machdep.cpu.tlb.inst.large: 8 64 64
machdep.cpu.tlb.shared: 1024
machdep.cpu.address_bits.physical: 39
machdep.cpu.address_bits.virtual: 48
machdep.cpu.core_count: 4
machdep.cpu.thread_count: 8
machdep.cpu.tsc_ccc.numerator: 0
machdep.cpu.tsc_ccc.denominator: 0

[ More Info ]

[/os/os-x] permanent link

Sat, Jun 10, 2017 8:18 pm

Automated email for Let's Encrypt certificate expiration

The Let's Encrypt certificate I use for an email server again wasn't automatically renewed - see Let's Encrypt certificate expired. The Let's Encrypt certificates exipre every 90 days, so I wanted the system to automatically email me a message at least a week before the certificate expires. I manually renewed the certificate today by running the command letsencrypt renew from the root account and checked the new expiration date with the command openssl x509 -enddate -noout -i cert_pem_file_location where cert_pem_file_location is the location of the relevant cert.pem file.

# openssl x509 -enddate -noout -in /etc/letsencrypt/live/
notAfter=Sep  8 19:14:00 2017 GMT

Since the new certificate expiration date is September 8, 2017, I wanted an email notice sent to me on September 1. I can then manually renew the certificate, if needed. I would then want to be notified every 3 months again indefinitely. Since the mailx utility is a standard email program found on Linux and OS X/macOS systems, I use it for sending scheduled email messages.

[ More Info ]

[/network/email] permanent link

Fri, Jun 09, 2017 11:01 pm

Obtaining public IP address from a command line interface

One way to determine the public IP address for a system, i.e., the IP address that systems on the Internet will see for the system when you connect to those external systems, from a command-line interface (CLI) on a Linux or Mac OS X/macOS system is to use the dig command dig +short E.g.:

$ dig +short

Alternatively, you can use an nslookup command as shown below:

$ nslookup

Non-authoritative answer:


The nslookup method will work on Microsoft Windows systems as well as OS X/macOS and Linux sysems.


Non-authoritative answer:


Both commands submit a Domain Name System (DNS) query to the DNS server, a name server maintained by OpenDNS. When you look up the fully qualified domain name (FQDN), the OpenDNS server will return the IP address of the system from which the DNS query originated, i.e., the system on which you ran the dig or nslookup command.

[/network/dns] permanent link

Tue, Jun 06, 2017 9:22 pm

Removing whitespace from lines in Vi

To remove whitespace characters, such as spaces and/or tabs from a line while editing a file in the vi and Vim text editor you can use a regular expression (regexp) that incorporates \s (lowercase letter "s"), which respresents a white space character. E.g., supposing the lines below appear in a file:

450 SN/GN Tech  Edit Delete
ACE     Edit Delete
ADO             Edit Delete
AGO     Edit Delete
AGS     Edit Delete
AIM     Edit Delete
ASF         Edit Delete

I could hit the colon key and type s/\s*Edit Delete// to delete the white space after the project name that appears at the beginning of the line and the "Edit Delete" at the end of the line, so that only the project name remains. To perform the substitution for all lines, I could use 1,$ s/\s*Edit Delete//.

The 1,$ represents every line from the 1st to the last and 1,$ s/old_pattern/new_pattern/ would indicate that a substitution is to be performed on every line with new_pattern replacing old_pattern on each line. The \s represents any whitespace character and the asterisk after it indicates to look for zero or more occurrences of any whitespace character. So s/\s*Edit Delete// indicates to delete white space characters followed by the words Edit Delete.

I could also use \W, instead; \W represents any non-alphanumeric character.

Related articles:

  1. gVim Portable for Windows


  1. Lesson 9: All this whitespace
    RegexOne - Learn Regular Expressions with simple, interactive exercises.

[/software/editors/vi] permanent link

Sun, Jun 04, 2017 11:21 pm


If you wish to know whether a cell holds a Uniform Resource Locator (URL), such as, in Google Sheets you can use the ISURL function. E.g., if I wanted to know whether cell A5 contains a URL, elsewhere in the spreadsheet I could use the formula =ISURL(A5). The value returned will be either TRUE or FALSE. Note: this will return the Boolean value TRUE or FALSE only if the text in the cell is a URL. If, instead, I have =hyperlink("","Super User"), i.e., I have text in the cell that is hyperlinked, the value will be FALSE, because, in the example, the text that appears in the cell will be Super User.

This function is not available in Microsoft Excel, at least as of Excel 2013 for Windows and Microsoft Excel for Mac 2016 (version 15.29), which is part of Microsoft Office 2016 for OS X and macOS systems. Nor is it available for Apache OpenOffice Calc, at least as of version 4.1.1. If you try using ISURL as a formula in those applications, you will see #NAME? appear in the cell where you place the formula, since its usage is an incompatibility between those versions and Google Sheets.

The ISURL formula will return TRUE for other URLs besides HTTP or HTTPS ones. E.g., FTP and mailto URLs will also result in a value of TRUE. E.g., if a cell contains any of the following URLs, an ISURL formula that checks the content of the cell will return TRUE.

[/software/office/excel] permanent link

Fri, Jun 02, 2017 10:44 pm

Using nslookup to check an email blocklist

I was notified by someone today that yesterday he had sent an email to a mailing list on an email server I maintain, but the email had not been delivered to recipients. When I checked yesterday's email log, I didn't see any email from his email address, so I asked him to resend the message. He did so, but that email message was also not delivered and I didn't see any log entry for his email address in today's email log, /var/log/maillog. He has a email address and Verizon recently transitioned its email service to AOL. I remembered helping him make that transition last month, so I looked for any entries in the log file and found the entry below for an attempt by an AOL email server to deliver a message that was rejected at the time he told me he had sent the email today.

# grep aol /var/log/maillog
Jun  2 10:50:16 moonpoint sendmail[23955]: ruleset=check_relay, arg1=omr-a006e.m, arg2=, [], reject=55
0 5.7.1 Spam Block:mail from refused - see

[ More Info ]

[/network/email/spam/sorbs] permanent link

Sun, May 28, 2017 10:10 pm

Querying an SQLite Database With PHP

If you wish to query an SQLite database using PHP, you can do so by placing commands similar to those shown below within the code for a webpage:


$filename = "/Users/jasmith1/Documents/www/test/presidents.db";

$db = new SQLite3($filename);

$results = $db->query('SELECT * FROM Terms');
while ($row = $results->fetchArray()) {
    echo "<br>\n";

In the example above, the database location and file name is stored in the variable $filename. The file must be in a location accessible by the webserver and the file permissions must allow access to the file.

[ More Info ]

[/software/database/sqlite] permanent link

Fri, May 26, 2017 8:38 pm

Burning an ISO file to a disc under Windows 10

To burn an ISO image file to a disc under Windows 10 using capabilities built into the operating system, click on the .iso file in Windows File Explorer to highlight it. You will then see Disc Image Tools appear at the top of the window with Manage below it.

Click on Manage. You will then see options to Mount or Burn.

Click on Burn. A Windows Disc Image Burner window will appear where you can select the disc burner device, if there is more than one in the system. Click on the Burn button to burn the iso file to a CD or DVD.

When the .iso file has been burned to a disc, you should see a "The disc image has been successfully burned to disc" message and the disc should be ejected from the drive.

[ More Info ]

[/os/windows/win10] permanent link

Tue, May 23, 2017 10:36 pm

Checking speed and duplex settings on a Linux system

Sometimes network performance problems on a system can be due to a mismatch in the speed and/or duplex settings on a system and the switch or router to which it connects. Autonegotiation normally works to ensure that two connected devices have compatible settings, but occasionally it may not work as intended. On a Linux system, one way to check the spped and duplex values is by using the ethtool command. If the utility, which provides capabilities for querying and changing settings such as speed, port, auto-negotiation, PCI locations and checksum offload on many network devices, especially of Ethernet devices, isn't installed already you can install it on a Ubuntu Linux system with the command sudo apt-get install ethtool. On a CentOS Linux system, you can use yum install ethtool. You can run the software to show the settings for a network interface controller (NIC) by issuing the command ethtool devname where devname is the name associated with the network interface, e.g., you might issue the command ethtool eth0 on a Ubuntu system. You can see the available network interfaces using the command ifconfig -a. Below is the output of the command run on a CentOS system:

$ ethtool enp1s4
Settings for enp1s4:
	Supported ports: [ TP ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Half 1000baseT/Full 
	Supported pause frame use: No
	Supports auto-negotiation: Yes
	Advertised link modes:  10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Half 1000baseT/Full 
	Advertised pause frame use: No
	Advertised auto-negotiation: Yes
	Speed: 100Mb/s
	Duplex: Full
	Port: Twisted Pair
	Transceiver: internal
	Auto-negotiation: on
	MDI-X: Unknown
Cannot get wake-on-lan settings: Operation not permitted
	Current message level: 0x00000037 (55)
			       drv probe link ifdown ifup
	Link detected: yes

[/os/unix/linux/utilities/network] permanent link

Sun, May 21, 2017 10:29 pm

Book Collector database disappeared

I use the book database software to manage my book collection. I hadn't updated the database for several months, but I had purchased some books recently and wanted to add those books to the database. When I opened the Book Collector program (version 16.4.3), it automatically opened the last book database I had open, which was one that I use to track books my wife and I have purchased as gifts for a friend who also enjoys reading, so I don't buy the same ones again in the future. But when I tried to find the database in which I store information for my own books, I couldn't find it. When I clicked on File and selected Open Database in the program and navigated to a folder where I thought that database was stored, the program didn't show the database at that location. When I navigated to that directory with the Windows File Explorer, I didn't see any files with a .bkc extension, which is the filename extension used by the Book Collector database program. also provides comic, game, movie, and music database programs.

[ More Info ]

[/software/database/collectorz] permanent link

Sat, May 20, 2017 8:24 pm

Finding open files on a Windows SBS server

If you need to find files open on a Small Business Server (SBS) system, e.g., perhaps files have been opened on the server from other computers in the windows domain, you can do so by taking the following steps:
  1. Click on Start
  2. Select Administrative Tools then select Computer Management and then, under Sytem Tools, click on Shared Folders
  3. Double-click on Open Files. You will then see the files open on the server from other systems. You will see the files being accessed, who is accessing them, the locks, if any, and the mode in which it files have been accessed, e.g., whether they are open only for reading or whether they are open in read and write mode. Right-clicking on a file will give you the ability to close the open file.

[ More Info ]

[/os/windows/commands] permanent link

Thu, May 18, 2017 10:08 pm

Batch file to ping several hosts and log results

Since a connectivity issue between a Windows XP system in another country and systems in the United States seemed to correlate with the time of day that connectivity attempts were taking place, I wanted to have a batch file that would periodically ping from the source to the destination hosts and record the results, so that I could determine if packet loss was occurring at particular times every day because of contention with other traffic. So I created the following batch file (pinghosts.bat):

@echo off

set pingCount=5
set timeOut=500
set dirPath=%HOMEPATH%\Documents

REM ping,, and
for %%i in ("" "" "") do (
   if not exist %dirPath%\%%i.txt (
      systeminfo | find "Time Zone:" > %dirPath%\%%i.txt
   echo. >> %dirPath%\%%i.txt
   echo %date% %time% >> %dirPath%\%%i.txt
   ping -n %pingCount% -w %timeOut% %%i >> %dirPath%\%%i.txt

[ More Info ]

[/os/windows/commands/batch] permanent link

Mon, May 15, 2017 11:30 pm

Zooming in and out in an email message in Outlook 20016

If the text is too small for you to read or you want to see more text in a given area while editing an email message in the Outlook email client in Microsoft Office 2016 on an Apple laptop, such as a MacBook Pro runing the OS X/macOS operating system, you can do so without changing the font size for text in the message by holding down the control key on the keyboard while scrolling up or down with two fingers on the touchpad. If you run two fingers downwards on the touchpad while holding down the control key, you will zoom in, enlarging the text, while if you run two fingers upwards on the touchpad, you will zoom out, making the text smaller.

[/network/email/clients/outlook/2016] permanent link

Sun, May 14, 2017 10:55 pm

Running chkdsk from Windows File Explorer

You can run the Microsoft Windows chkdsk program from within the Windows File Explorer by right-clicking on the drive you wish to check and selecting Properties or with the drive selected, click on Properties from the tool bar at the top of the File Explorer window. Then click on Tools tab and then the Check button.

[ More Info ]

[/os/windows/filesystem] permanent link

Thu, May 11, 2017 10:38 pm

Firefox in Force Quit Applications, but not in Activity Monitor

Firefox stopped responding whenever I attempted to access a site. I could verify network connectivity to various sites with ping, but if I attempted to access a URL in the Firefox browser on my MacBook Pro running OS X El Capitan, Firefox (version 45.7.0) would not display any webpage. I've had this problem in the past; when it occurred, I would quit Firefox, sometimes using Force Quit Applications, which is available by clicking on the Apple icon at the top, left-hand corner of the screen and then selecting Force Quit and then selecting Firefox from the Force Quit Applications list of running applications and then clicking on the Force Quit button. When I did that today, I saw the message below as usual:

Do you want to force "Firefox" to quit?

You will lose any unsaved changes.


I clicked on Force Quit, but that seemed to have no effect. I closed and reopened Force Quit Applications and went through the same process numerous times, but no matter how many times I repeated the process, Firefox remained in the list of running applications that it showed.

[ More Info ]

[/os/os-x] permanent link

Sun, May 07, 2017 6:09 pm

Centering an image on a webpage horizontally

To center an image horizontally on a webpage, you can add style="display: block; margin: auto;" to the img tag. E.g.

<p> <img src="320px-Fisher_500_radio.jpg" alt="Fisher AM/FM radio from 1959" width="320" height="208" style="display: block; margin: auto;"> </p>

Fisher AM/FM radio from 1959

Related articles:

  1. Centering a div and an image within it using CSS

[/network/web/html/css] permanent link

Sat, May 06, 2017 10:55 pm

Installing Homebrew on Mac OS X

Homebrew is a free and open-source (FOSS) package management system that is available for OS X/macOS systems. Homebrew makes extensive use of GitHub to expand the support of several packages through user contributions. The software was written by Max Howell in 2009; as of July 2016 there was a team of twelve developers maintaining the software. You can install it by opening a Terminal window and issuing the command /usr/bin/ruby -e "$(curl -fsSL". I recommend putting the sudo command at the beginning of the command, so you won't be prompted so many times to provide the password for your account during the installation, i.e., sudo /usr/bin/ruby -e "$(curl -fsSL".

[ More Info ]

[/os/os-x] permanent link

Fri, May 05, 2017 10:46 pm

Using MTR for network diagnostics

Traceroute and ping are commonly provided with operating systems as tools to diagnose problems in network connectivity between systems. Another very useful took, which combines the functionality of both those other tools is My traceroute, which was originally know as Matt's traceroute, aka MTR. The software is available for Linux systems and also for Microsoft Windows sytems as WinMTR.

The software can be installed via the package management system for some Linux distributions. E.g., it can be installed on a CentOS Linux system with yum using the command yum install mtr. You can check on whether it is installed on a CentOS system with the command rpm -qi mtr or you can just issue the command which mtr on a Linux system.

[ More Info ]

[/network/tools] permanent link

Tue, May 02, 2017 11:18 pm wants to use confidential information in your keychain

When I sat down at my MacBook Pro laptop running OS X El Capitan today, I saw the message below (image):

Safari wants to use your confidential
information stored in "A49A5BE4-6FB4-4399-9EB3-3DBA06717BEF"
in your keychain.

Do you want to allow access to this item?


The "A49A5BE4-6FB4-4399-9EB3-3DBA06717BEF" wasn't an identifier I recognized. If you see such a message, you can search for the identifier in the message using the Keychain Access application, which is located in the Applications/Utilities folder. After opening the program, click on Edit and then select Find. In the upper, right-hand corner of the window, you will see a field to the right of a magnifying glass icon where you can type the text for which you wish to search. I could type just part of the string, e.g. "A49A5" to locate the relevant entry.

[ More Info ]

[/network/web/browser/safari] permanent link

Mon, May 01, 2017 11:16 pm

Installing Wireshark on Mac OS X El Capitan

Wireshark is free and open-source software that provides packet capture and analysis capabilities. The software is available for Mac OS X/MacOS systems. An Apple Disk Image .dmg file can be downloaded from Download Wireshark. After downloading the .dmg file, double-click on it to open it. Inside the .dmg file you will see a .pkg file and a Read me first.rtf file.

Wireshark DMG file

Double-click on the .pkg file to start the installation.

[ More Info ]

[/os/os-x] permanent link

Sun, Apr 30, 2017 8:33 pm

SORBS Blocking Email from Gmail

A family member reported that she hadn't received an email message sent to her today by a Gmail user who had sent her message in reply to the family member's email to her. Since I administer the Sendmail email server she uses, I checked the Sendmail log file at /var/log/maillog. I saw the outgoing email sent to the Gmail address, but no incoming email from that address. So I sent email messages from a Gmail account I have as well as email messages from other external addresses to the root account on the server. The other email messages arrived, but none I sent from the Gmail account arrived. So I ran tcpdump on the server to capture data to/from port 25 on the system, which is the well-known port for Simple Mail Transfer Protocol (SMTP) traffic. I then sent another email message to the root account on the Sendmail server from my Gmail account. After allowing several minutes for an attempted delivery from the Gmail server to occur, I stopped the packet capture with Ctrl-C.

# tcpdump -i enp1s4 port 25 -w smtp_2017-04-30.pcap
tcpdump: listening on enp1s4, link-type EN10MB (Ethernet), capture size 65535 bytes
^C225 packets captured
225 packets received by filter
0 packets dropped by kernel
# ls -lh smtp_2017-04-30.pcap 
-rw-r--r--. 1 tcpdump tcpdump 33K Apr 30 12:33 smtp_2017-04-30.pcap

[ More Info ]

[/network/email/spam/sorbs] permanent link

Sun, Apr 23, 2017 11:31 pm

Phishing email leading to

Someone notified me that she had received an email from a business contact a couple of days ago informing her that he had shared a document using Dropbox. But when she later contacted his company, she was informed that someone else was sending out email using his email address. She forwarded the message to me, which is shown below with the actual sender's address changed, though:

Subject: Blaine Watkins has shared a file with you using Dropbox
From: Blaine Watkins <>
Date: Tue, April 18, 2017 6:09 pm

Hi, I just uploaded a Document for you to see using Dropbox. View|Download files and let me know what you think.



She was concerned that her system might have been infected by malware when she viewed the message. I scanned her system with SUPERAntiSpyware Free Edition, but SUPERAntiSpyware didn't find any malware recently placed on her system. McAfee Total Protection is the real-time antivirus software on her system, but I've found that using additional tools, such as SUPERAntiSpyware, can sometimes detect malware missed by a user's antivirus software. I performed a full scan of the system using McAfee Total Protection after running the SUPERAntiSpyware scan, but it didn't find anything, either. I also checkd the system with Malwarebytes Anti-Malware Home (Free), but it didn't find any malware, either, except for a zip file I created containing files associated with malware I found on the system quite some time ago.

[ More Info ]

[/security/phishing] permanent link

Sat, Apr 22, 2017 11:20 pm

Vertically aligning an image with text using CSS

If you wish to vertically align an image with text in Hypertext Markup Language (HTML) code that is compliant with Cascading Style Sheets (CSS) you can do so using <style="vertical-align: position;"> where position is bottom, middle, or top. E.g., if I want to align an image of the direct current symbol, which is a horizontal line over top of three shorter horizontal lines, so that the image is vertically in the middle of the text, I could use the code below:

24V <img src="direct-current.gif" width="49" height="49" style="border: none; vertical-align: middle;" alt="Direct current symbol">1500mA

I would then see the following:

24V Direct current 

If I used vertical-align: top, instead, the image would appear as shown below where the text is aligned with the top of the image:

24V Direct current 

If I used vertical-align: bottom, instead, the image would appear as shown below:

24V Direct current 

If I did not specify a vertical alignment, the image would appear as it did when I specified "bottom" for the vertical alignment as shown below:

24V Direct current symbol1500mA

Though, in this case I could also have used the HTML code &#9107;, instead, for the direct current symbol and avoided the use of an image and the need to align the image with the text, though I didn't realize that when I started using the image on a page for power adapter for various devices.

E.g.: 24V ⎓ 1500mA

[/network/web/html/css] permanent link

Wed, Apr 19, 2017 10:11 pm

Excel 2016 - Workbook Protected

I wanted to add another sheet to an Excel workbook, but when I clicked on the "+" to add the additional worksheet, I saw the message "Workbook is protected and cannot be changed."

Excel 2016 - workbook protected

I didn't know what the password might be because I had never set a password for the workbook, which I had created in a prior version of Excel; I'm using Microsoft Office 2016 on a MacBook Pro running OS X El Capitan (10.11.6) at the moment.

[ More Info ]

[/software/office/excel] permanent link

Tue, Apr 18, 2017 11:23 pm

Vinagre RDP client for CentOS 7

I needed to connect to a Microsoft Windows 10 system using the Remote Desktop Protocol (RDP) from a CentOS 7 system. I've used rdesktop software to control a Windows system from a Linux system in the past and I thought there might be an rdesktop package available for CentOS, but when I tried to install one with yum, I found that none was available.

# yum install rdesktop
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base:
 * epel:
 * extras:
 * updates:
No package rdesktop available.
Error: Nothing to do

But I found that Vinagre, was already available on the system. Vinagre is a Virtual Network Computing (VNC), Secure Shell (SSH), Remote Desktop Protocol (RDP) and Simple Protocol for Independent Computing Environments (SPICE) client for the GNOME desktop environment.

[ More Info ]

[/network/rdp] permanent link

Thu, Apr 13, 2017 10:37 pm

Counting the number of instances of a process on Microsoft Windows

If you need to know the number of instances of a particular process running on a Microsoft Windows system, you can see all of the instances by using the tasklist /fi option to filter the output from the tasklist command by imagename. E.g., I could view information on the PuTTY processes currently running on a Windows system with the command below:

C:\>tasklist /fi "IMAGENAME eq putty.exe"

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
putty.exe                    57380 Console                    1      4,404 K
putty.exe                    49012 Console                    1      3,584 K
putty.exe                    72424 Console                    1      3,060 K
putty.exe                     8028 Console                    1      3,992 K
putty.exe                    96136 Console                    1      4,632 K
putty.exe                   102860 Console                    1      2,936 K
putty.exe                    87200 Console                    1      4,572 K
putty.exe                   121020 Console                    1      2,908 K
putty.exe                   100348 Console                    1      4,228 K
putty.exe                    81692 Console                    1      3,068 K
putty.exe                   118448 Console                    1      2,020 K
putty.exe                   102856 Console                    1      2,544 K
putty.exe                   126692 Console                    1      4,332 K
putty.exe                   133004 Console                    1      3,664 K
putty.exe                   136344 Console                    1      5,204 K
putty.exe                   126408 Console                    1      3,620 K
putty.exe                   114896 Console                    1      2,880 K
putty.exe                   132868 Console                    1      2,972 K
putty.exe                   133048 Console                    1      3,860 K
putty.exe                   139232 Console                    1      3,732 K
putty.exe                   132756 Console                    1      2,928 K
putty.exe                   136484 Console                    1      3,576 K
putty.exe                   147964 Console                    1      2,960 K
putty.exe                   142800 Console                    1      6,136 K
putty.exe                   139192 Console                    1      2,952 K
putty.exe                    32748 Console                    1      2,896 K
putty.exe                    78048 Console                    1      3,596 K
putty.exe                   113756 Console                    1      3,304 K
putty.exe                    62572 Console                    1      4,120 K
putty.exe                    17620 Console                    1      3,376 K
putty.exe                    36156 Console                    1      1,756 K
putty.exe                    86144 Console                    1      3,528 K
putty.exe                     4600 Console                    1      4,440 K
putty.exe                    46532 Console                    1      6,048 K
putty.exe                    49572 Console                    1      2,884 K
putty.exe                    69560 Console                    1      3,268 K
putty.exe                    67948 Console                    1      4,120 K
putty.exe                   139328 Console                    1      2,948 K
putty.exe                    25888 Console                    1      6,552 K
putty.exe                   119096 Console                    1      3,676 K
putty.exe                    48572 Console                    1      3,084 K
putty.exe                   132724 Console                    1      6,720 K
putty.exe                   123480 Console                    1      2,944 K
putty.exe                   148548 Console                    1      3,704 K
putty.exe                    46280 Console                    1      7,860 K
putty.exe                   146844 Console                    1      4,648 K
putty.exe                    47612 Console                    1      6,548 K
putty.exe                    84404 Console                    1      3,060 K
putty.exe                    35920 Console                    1     15,780 K
putty.exe                    91288 Console                    1     14,832 K
putty.exe                   115612 Console                    1      5,216 K
putty.exe                    85164 Console                    1      6,972 K
putty.exe                    22796 Console                    1      9,640 K
putty.exe                    87868 Console                    1     15,596 K


If I don't want to manually count the instances, I can use the find command as shown below:

C:\>tasklist /fi "IMAGENAME eq putty.exe" | find /i /c "putty.exe"



The /i option to the find command tells find that the case of letters is unimportant, i.e., it should match either lowercase or uppercase letters. The /c option instructs it to display a count for the number of matching lines it found.

If I want to put the count in a variable in a batch file, I can use the the command noted in Setting a Variable to be the Output of a Command.

Alternatively, you can use a Windows Management Instrumentation Command-line (WMIC) command. E.g.:

C:\>wmic process where name="putty.exe" get name | find /c "putty.exe"


Related articles:

  1. Obtaining a list of running processes and their associated PIDs Date: April 8, 2017
    MoonPoint Support

[/os/windows/commands] permanent link

Wed, Apr 12, 2017 10:02 pm

Firefox - the page isn't redirecting properly

If you are seeing a "Firefox has detected that the server is redirecting the request for this address in a way that will never complete" message, the problem may be resolved by removing cookies or history associated with the site, but you might also need to check the cookies exceptions list in Firefox; that's how I was finally able to resolve a problem accessing a particular site that I could access in another browser on a system, but not with Firefox.

When trying to log into the Rakuten Marketing website using Firefox 52.0.1 on a Windows 10 system, I saw the message below after being redirected to

The page isn't redirecting properly

Firefox has detected that the server is redirecting the request for this address in a way that will never complete.

• This problem can sometimes be caused by disabling or refusing to accept cookies.

[ More Info ]

[/network/web/browser/firefox] permanent link

Tue, Apr 11, 2017 8:37 pm

Writing to a CSV file with Python

I need to track the status of firewall rule requests and provide a status report every Monday. The requests are managed through a website where I can see the list of uncompleted requests and their status, but the site doesn't give me a count of the number of requests in each of the states that a request can be in, which can be "Pending Approval", "Modified", "Pending Removal" "On Hold", "Clarification Required", "Waiting Implementation", or "Waiting Removal". To obtain the count of the number of requests in each state, I download the webpage showing the requests and their status to my laptop and then run a Python script to count the queued items. But I also want to see how the numbers are changing over time, so I modified the script to write the counts to a comma-separated values (CSV) file that I can open in a spreadsheet program, such as Microsoft Excel.

To work with comma-separated value (CSV) files in a Python script, include the command import csv in the script. I also include the os.path module to use for testing whether a file already exists that will hold the data, the re module to perform regular expression parsing of lines in the downloaded webpage, the sys module for checking the command line arguments to the script, and the datetime module for determining the current date and formatting it in YYY-MM-DD format, where "YYYY" is the year, "MM" the month, and "DD" the day of the month, as explained in Python - Checking times and dates, for writing the date to the output file.

[ More Info ]

[/languages/python] permanent link

Mon, Apr 10, 2017 8:37 pm

Somone else is still using this PC

I connected remotely to a Microsoft Windows 10 system using the Remote Desktop Protocol (RDP). I updated some software on the system which required a reboot, so I clicked on the Windows Start button and chose to restart the system, however I saw the message "Someone else is still using this PC. If you restart now, they could lose unsaved work." There was a "Restart anyway" button, but, since it was late on a Sunday night, I didn't think anyone else should be accessing the system.

Someone else is still using this PC

[ More Info ]

[/os/windows/win10] permanent link

Sun, Apr 09, 2017 4:51 pm

Adding a checkbox in Microsoft Excel

To add a checkbox (check box, tickbox, tick box) column in Microsoft Excel, you will need to first enable the developer ribbon in Excel, if it is not already enabled. To do so, take the following steps in Excel (the steps were written for Excel 2010 and 2013, but may be similar for other versions):

Click on File and select Options.

Excel - File - 

[ More Info ]

[/software/office/excel] permanent link

Sat, Apr 08, 2017 11:26 pm

Obtaining a list of running processes and their associated PIDs

If you need to get a list of the processes running on a Microsoft Windows system and the process identifier (PID) for each of those processes, you can get the information from a command line interface (CLI), e.g., a command prompt, using the tasklist command or the Windows Management Instrumentation Command-line (WMIC) command wmic process get name, processid. If you wish to filter the output so that you only see information for a specific process, you can use the /fi option for the tasklist command. E.g., if I only wanted to determine the PID for the QuickBooks QBW32.exe process, I could use the command tasklist /fi "imagename eq QBW32.exe". With WMIC, you can include a "where" option, e.g., wmic process where name='QBW32.exe' get name, processid.

[ More Info ]

[/os/windows/commands] permanent link

Fri, Apr 07, 2017 3:14 pm

Counting SQLite records based on a specified date

I track work requests in an SQlite database. For each request in a table named "Tasks" in the database, there is a column holding the date the request was approved. Every week I need to include the number of requests approved that week in a weekly report. I can do that with the Structured Query Language (SQL) command SELECT COUNT(*) FROM Tasks WHERE Approved >= date(CURRENT_DATE,"-7 day"). I have a Python script that queries the SQL database to count the requests approved within the last week, but sometimes I want to determine the number of requests approved since a particular date. So I modified the script to accept a date provided as an argument on the command line and, if a date is specified, to determine the number of entries where the approval date matches the specified date or is later than the specified date.

[ More Info ]

[/languages/python] permanent link

Wed, Apr 05, 2017 10:47 pm

Counting queued items with a Python script

I need to review and approve firewall rule requests. I can get a list of those pending approval, ones requesting a modification to existing rules, those pending removal because they've expired (all rules must be reviewed on at least a yearly basis), ones on hold, ones that are in a "clarification required" state due to a question about the rules being requested, those approved for implementation, but not yet implemented, and those awaiting removal. But the page that displays the requests in each category doesn't give me a count of the number in each category, so I wrote a Python script that will read the webpage containing that information that I've downloaded, parse the HTML code for the page and give me a count of the number of requests in each category.

The script is named . The name of the HTML file that was downloaded should be provided on the command line. E.g.:

$ ./ ~/Documents/Work/queued/Request.html
Request Status

Pending Approval:       69
Modified:               36
Pending Removal         43
On Hold:                0
Clarification Required: 28
Waiting Implementation: 26
Waiting Removal:        12

Total requiring review: 176

[ More Info ]

[/languages/python] permanent link

Sun, Apr 02, 2017 8:49 pm

Color & BgColor Clickable BBCode Bar Mod installation

When I attempted to install the Color & BgColor Clickable BBCode Bar mod on a Simple Machines Forum (SMF) 2.0.13 forum I saw an "Error in Packages" message:

Error in Package Installation
At least one error was encountered during a test installation of this package. It is strongly recommended that you do not continue with installation unless you know what you are doing, and have made a backup very recently. This error may be caused by a conflict between the package you're trying to install and another package you have already installed, an error in the package, a package which requires another package that you don't have installed yet, or a package designed for another version of SMF.

[ More Info ]

[/network/web/forums/smf] permanent link

Sat, Apr 01, 2017 6:14 pm

Can't log into phpMyAdmin

I was unable to log into phpMyAdmin from Firefox. Every time I entered the user name and password, I would be presented with the login screen again. I was able to resolve the problem by removing the coookies for the site on which phpMyAdmin was running from within Firefox 52.0 by the following process:
  1. Click on the menu button at the top, right-hand corner of the Firefox window - the one that has 3 horizontal bars - and select Options.
  2. Select Privacy.
  3. Click on the link under History for "remove individual cookies".
  4. Click on the site on which phpMyAdmin is running to select that site, then click on Remove Selected. Don't click on Remove All or you will remove cookies for all sites.

    Firefox - Removed Selected Cookies

  5. Click on Close to close the cookies list window.

[/network/web/tools/phpmyadmin] permanent link

Tue, Mar 28, 2017 9:39 pm

Determining which packages were recently installed on a CentOS Linux system

I needed to determine which packages were recently installed on a CentOS 7 system where yum is used to install packages. The command rpm -qa --last will list all packages that have been installed in chronological order with the most recently installed packages listed first, since the --last option orders the package listing by install time such that the latest packages are at the top. E.g.:

# rpm -qa --last
amarok-utils-2.8.0-19.el7.x86_64              Fri 12 Aug 2016 09:02:34 PM EDT
amarok-libs-2.8.0-19.el7.x86_64               Fri 12 Aug 2016 09:02:34 PM EDT
amarok-2.8.0-19.el7.x86_64                    Fri 12 Aug 2016 09:02:31 PM EDT
taglib-extras-1.0.1-8.el7.x86_64              Fri 12 Aug 2016 09:02:17 PM EDT
mariadb-embedded-5.5.50-1.el7_2.x86_64        Fri 12 Aug 2016 09:02:17 PM EDT
qjson-0.8.1-4.el7.x86_64                      Fri 12 Aug 2016 09:02:15 PM EDT
kdelibs-webkit-4.14.8-1.el7.x86_64            Fri 12 Aug 2016 09:02:14 PM EDT
qtscriptbindings-0.2.0-5.el7.x86_64           Fri 12 Aug 2016 09:02:13 PM EDT
qtwebkit-2.3.4-6.el7.x86_64                   Fri 12 Aug 2016 09:01:57 PM EDT
alpine-2.20-2.el7.x86_64                      Mon 08 Aug 2016 10:13:54 PM EDT
fuse-sshfs-2.5-1.el7.x86_64                   Mon 08 Aug 2016 09:28:26 PM EDT
gpg-pubkey-352c64e5-52ae6884                  Mon 08 Aug 2016 09:27:13 PM EDT
epel-release-7-6.noarch                       Mon 08 Aug 2016 09:12:51 PM EDT
lynx-2.8.8-0.3.dev15.el7.x86_64               Fri 05 Aug 2016 10:28:17 PM EDT
telnet-0.17-59.el7.x86_64                     Sat 30 Jul 2016 04:34:17 PM EDT
thunderbird-45.2-1.el7.centos.x86_64          Sat 30 Jul 2016 04:10:55 PM EDT
mutt-1.5.21-26.el7.x86_64                     Sat 30 Jul 2016 03:50:58 PM EDT
<text snipped>
gnu-free-fonts-common-20120503-8.el7.noarch   Fri 15 Jul 2016 03:10:39 PM EDT
dejavu-fonts-common-2.33-6.el7.noarch         Fri 15 Jul 2016 03:10:39 PM EDT
libgcc-4.8.5-4.el7.x86_64                     Fri 15 Jul 2016 03:10:38 PM EDT
fontpackages-filesystem-1.44-8.el7.noarch     Fri 15 Jul 2016 03:10:38 PM EDT
control-center-filesystem-3.14.5-8.el7.x86_64 Fri 15 Jul 2016 03:10:38 PM EDT

[ More Info ]

[/os/unix/linux/centos] permanent link

Sun, Mar 26, 2017 5:10 pm

Unrar for Centos 7

I needed to convert a rar file to a zip file on a CentOS 7 Linux system. But when I tried installing an unrar package with yum, the package manager on the system, I found none was available from any of the software repositories the system was configured to check for packages.

# yum install unrar
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base:
 * epel:
 * extras:
 * updates:
No package unrar available.
Error: Nothing to do
# yum install rar
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base:
 * epel:
 * extras:
 * updates:
No package rar available.
Error: Nothing to do

I had previously installed support for the Extra Packages for Enterprise Linux (EPEL) repository, but though I thought the unrar package might be found there, it wasn't found. I did find an RPM file for the software, howerver, at RPM CentOS 7 unrar 5.0.12 x86_64 rpm. I downloaded that file with wget and, since yum can be used to install RPM files, installed it with yum.

[ More Info ]

[/os/unix/linux/centos/7] permanent link

Sat, Mar 25, 2017 10:56 pm

Using the more command to discard lines at the beginning of a file

If you wish to ignore lines at the start of output or in the beginning of a file, you can use the more command to do so. E.g., suppose I have a text file named fruit.txt that contains the following lines:


On a Linux, Unix, or OS X/macOS system, if I want to see all lines of the file but the first one, I can use the +n, where n is a number, argument to the more command. In this case, I can use more +2 fruit.txt to start the output at the second line in the file.

$ more +2 fruit.txt

If I wanted to ignore the first four lines and start output at the fifth line, I could use more +5.

$ more +5 fruit.txt

[ More Info ]

[/os/unix/commands] permanent link

Fri, Mar 24, 2017 10:31 pm

Redirecting SQLite output to a file

If you need to redirect the output of SQL commands to a file while using SQLite, you can do so using the .output command. E.g., I have an SQLite database on my MacBook Pro laptop running OS X that contains a table named Equipment. Within that table is a column named Device that is a description for the particular piece of equipment in the table entry. I can view just that field for all records with the SQLite command SELECT Device FROM Equipment. To direct the output of the command to a text file named device.txt, I can use the command .output device.txt. After executing the command to select the Device field from all records, I can then issue the .output command without any arguments to it to return to having the output of commands displayed on the console rather than going to the file.

$ sqlite3 ~/Documents/Work/CRQ/CRQ.db
SQLite version 2015-05-20 18:17:19
Enter ".help" for usage hints.
sqlite> .output device.txt
sqlite> SELECT Device FROM Equipment;
sqlite> .output

[/software/database/sqlite] permanent link

Fri, Mar 17, 2017 6:19 pm

OS X "arrange by" in column view

I usually have the OS X Finder set to display folders and files in alphabetical order by setting the view mode to arrange the display of files and folder by name. But sometimes I switch to view by size, etc. However, when I then switch back to view the files and folders in column mode arranged by name, Finder doesn't actually display them in alphabetical order, which is annoying.

I finally got to the point where the issue was so annoying that I felt I had to find a solution. I found Brett Taylor's HOWTO: Fix file sorting in Finder‘s column view on Mac OS X Lion article which provided a means to address the issue. Though the title for his article, which acknowledges Barney-15E's post at In OS X Lion, Finder will not "Arrange By > Name" in "Column view", references OS X Lion, I found the solution worked for OS X El Capitan (10.11.6) on my MacBook Pro.

[ More Info ]

[/os/os-x] permanent link

Thu, Mar 16, 2017 10:30 pm

Outlook 2016 unspecified encryption certificate message

After resolving a problem with my laptop not reading certificates stored on my Personal Identity (PIV) card. I've been able to decrypt email messages from others with Outlook 2016 on my MacBook Pro laptop running OS X El Capitan (10.11.6) by using my PIV card in the SCR331 card reader, but when I attempt to send an encrypted email, I see a message stating (image):

You have not specified an encryption certificate for this account. Once you send this encrypted message, you will not be able to read it. Do you still want to send this encrypted message?

If I click on Continue the email will be sent encrypted so that it is readable by the recipients when their email clients decrypt it using their private keys, but I am unable to read the message I sent when it is placed in my Sent folder. To resolve the problem, I clicked on Tools on the Outlook menu bar, then selected Accounts, then clicked on the Advanced button. I then clicked on the Security tab and selected a certificate in the Encryption section. It had been set to "None Selected".

[ More Info ]

[/security/encryption] permanent link

Tue, Mar 14, 2017 8:51 pm

Adding the SNMP service to a Windows 10 system

You can check on whether the Simple Network Management Protocol (SNMP) service has already been added to a Microsoft Windows 10 system by opening a Services window and scrolling through the list of services to see if SNMP is present. You can open a Services window to check the list of installed services by typing services in the Cortana "Ask me anything" field and hitting Enter. The best match shown should be "Services Desktop app". You can click on it to see the list of Windows services.

SNMP service not present

If you see SNMP Trap, but not SNMP Service, you will need to add the service. The process for adding it is similar to the process of adding support for SNMP under Windows 7.

[ More Info ]

[/os/windows/win10] permanent link

Sun, Mar 12, 2017 10:57 pm

Let's Encrypt certificate expired

A couple of days ago, a user showed me a message she saw on her system about a security certificate issue. When I looked at the message, I realized it was due to the expiration of the Let's Encrypt certificate on the email server used by her system. I logged into that system and queried the server with the openssl command to check the expiration date. I saw it had expired that day, March 10.

# echo "quit" | openssl s_client -connect -quiet
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify return:1
depth=0 CN =
verify error:num=10:certificate has expired
notAfter=Mar 10 19:53:00 2017 GMT
verify return:1
depth=0 CN =
notAfter=Mar 10 19:53:00 2017 GMT
verify return:1
+OK Dovecot ready.

From the root account, I renewed the certificate using the command letsencrypt renew.

[ More Info ]

[/security/encryption/openssl] permanent link

Sat, Mar 11, 2017 4:53 pm

Losing Internet connectivity via Wi-Fi on an OS X system

On my MacBook Pro laptop running OS X El Capitan (10.11.6), I've been losing Internet connectivity periodically. Though it appears I still have Wi-Fi connectivity, when I attempt to access websites through a browser I find that I can't access sites at times, though a moment before I had no issues browsing the Web. Firefox will display a "Server not found" message. If I go to a Terminal window and try to ping any IP address, I see "request timeout" messages.

$ ping
PING ( 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
--- ping statistics ---
3 packets transmitted, 0 packets received, 100.0% packet loss

If I check the status of the WiFi connection using the airport command, I see that it is very noisy, though the signal stength is good, which I would expect, since the laptop is only a few feet from the wireless router.

$ /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I
     agrCtlRSSI: -39
     agrExtRSSI: 0
    agrCtlNoise: -93
    agrExtNoise: 0
          state: running
        op mode: station 
     lastTxRate: 73
        maxRate: 72
lastAssocStatus: 0
    802.11 auth: open
      link auth: wpa2-psk
          BSSID: 94:44:52:4a:43:40
           SSID: Rain
            MCS: 7
        channel: 11

[ More Info ]

[/os/os-x/wireless] permanent link

Wed, Mar 08, 2017 10:54 pm

Unable to read certificates from PIV card

I'd been having problems using a Personal Identity Verification (PIV) card with my MacBook Pro laptop running OS X El Capitan (10.10.5). I need the system to be able to access certificates on the PIV card in order to be able to decrypt email from some individuals. I have an SCR331 card reader, which attaches to the system via a Universal Serial Bus (USB) port.

SCR331 PIV card reader

If I attached the PIV card reader and clicked on the Apple icon at the top, left-hand corner of the screen and selected About This Mac then clicked on System Report, if I clicked on USB under Hardware, I would see the system recognized the card reader was attached. E.g., I saw "SCRx31 USB Smart Card Reader" for an SCR331 (that is a number on the underside of the device which appears to be its model number with a part number of 904875 listed there, also) PIV card reader I attached to the system via a USB port.

[ More Info ]

[/security/encryption] permanent link

Mon, Mar 06, 2017 11:28 pm

Finding files modified before or after a certain date with PowerShell

On a Microsoft Windows system, you can find files created before or after a specified date using the Get-ChildItem cmdlet. To use the cmdlet, open a PowerShell window - you can do so on a Windows 10 system by typing powershell in the Cortana "Ask me anything" window, hitting Enter, and then clicking on Windows PowerShell, which should be returned as the best match. If you wish to find files and directories before a certain date, you can use a command in the form Get-ChildItem | Where-Object {$_.LastWriteTime -lt date where date is the relevant date. E.g., on a system that uses the date format of mm/dd/yyyy where mm represents the month, dd the day and yyyy the year, a command like the one shown below, which returns a list of the files with a modification time prior to January 1, 2013, can be used:

PS C:\Users\Lila\documents> Get-ChildItem | Where-Object {$_.LastWriteTime -lt '1/1/2013'}

    Directory: C:\Users\Lila\documents

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----         9/9/2012  10:36 PM                Book Collector
d-----        11/8/2012   8:25 AM                Corel PaintShop Pro
d-----         4/6/2012   2:37 PM                recovered
-a----        4/14/2012   4:16 PM      761476464 Disc1.bin
-a----        4/14/2012   4:16 PM            941 Disc1.cue

PS C:\Users\Lila\documents>

[ More Info ]

[/os/windows/PowerShell] permanent link

Sat, Mar 04, 2017 10:00 pm

CSS max-width and min-width for @media

The third specification of the Cascading Style Sheets (CSS) style sheet language, CSS 3 provides support for media queries, which can adjust the display of information in a browser based on screen resolution, e.g. smartphone screen vs. computer screen, the width of the browser viewport, etc. This is done through the use of "@media, which can be used in a style sheet or a style element included in the <head> section of the HTML code.

Two parameters that can be used with @media are shown below:

max-widthThe maximum width of the display area, such as a browser window
min-widthThe minimum width of the display area, such as a browser window

[ More Info ]

[/network/web/html/css] permanent link

Fri, Mar 03, 2017 10:50 pm

Data loss provided by Microsoft's security "feature"

I was reminded tonight why one should avoid using Microsoft's latest desktop operating system, Windows 10, for any critical system. I had postponed some work on a Microsoft Windows 10 system that I was connected to by a Remote Desktop Protocol (RDP) connection. I had been working on the system a few days ago and returned to using the connection this evening only to see the system was going to reboot in a few minutes for an automatic update. I often have many applications and windows open at once and I knew there wasn't enough time for me to save all of my work, but I thought, even though I only had a few minutes remaining until the forced reboot, that I could at least postpone the reboot until tomorrow evening using the steps at Changing the time for a Windows 10 automatic restart that I've used before to postpone the forced reboot due to a software update. However, tonight when I got to the Windows Update settings window where a "Restart now" button appears, I was not able to click on "Change active hours" because that option did not appear under the "Restart now" button. I frantically tried to find another alternative. I thought, perhaps, I could hibernate the system to save the work in progress, but it was too late; the system rebooted and I lost all of the work in progress, much of which I'll be unable to recreate, since it had been several days since I had been working on the system and I now can't rememeber what I had put in some open Notepad windows, etc.

I understand the need to update systems to install security patches to prevent malware attacks, etc., but I've never lost data on this system over the course of several years due to such issues. I've only lost data due to Microsoft's automatic reboot "security feature".

I've read Microsoft is deigning to give their users a little more control over reboots due to automatic updates with the release of the Windows 10 "Creator's Edition" in April of 2017, e.g., see Windows 10 now prevents random reboots during updates, but Microsoft's decision that rebooting a system while a user is working on it even when there are open unsaved files, because Microsoft has decided that "this is for your own protection and too bad if you lose data" gives me a much more negative view of the company and its products. And I know there are many others similarly angered at the company after losing work to these forced reboots in Windows 10.

[/os/windows/win10] permanent link

Thu, Mar 02, 2017 9:52 pm

Extracting embedded documents from an Excel .xlsm file

I often receive Microsoft Excel files that have documents created by other Microsoft applications embedded within them. E.g., at the top of a worksheet I may see something like =EMBED("Visio.Drawing.11","").

EMBED Visio.Drawing

Sometimes I want to extract the embedded file. With a Microsoft Excel .xlsm file that is easy to do, because XLSM is a zipped, XML-based file format. To extract embedded documents, such as Visio drawings or PowerPoint presentations, I make a copy of the .xlsm file then rename the copy's extension from .xlsm to .zip. I can then extract the contents of the zip file. Within the directory that holds the extracted files, there will be a xl directory. Within that directory there is a media directory and within the media directory there is an embeddings directory that holds the embedded files, such as the Visio drawings in the example below.

$ ls ~/Documents/Work/CRQ/843940/unzipped
[Content_Types].xml	customXml		xl
_rels			docProps
$ ls ~/Documents/Work/CRQ/843940/test/xl
_rels			comments19.xml		comments9.xml
calcChain.xml		comments2.xml		ctrlProps
charts			comments20.xml		drawings
comments1.xml		comments21.xml		embeddings
comments10.xml		comments22.xml		media
comments11.xml		comments23.xml		printerSettings
comments12.xml		comments24.xml		sharedStrings.xml
comments13.xml		comments3.xml		styles.xml
comments14.xml		comments4.xml		theme
comments15.xml		comments5.xml		vbaProject.bin
comments16.xml		comments6.xml		workbook.xml
comments17.xml		comments7.xml		worksheets
comments18.xml		comments8.xml
$ ls ~/Documents/Work/CRQ/843940/unzipped/xl/media
image1.png	image2.jpeg	image4.emf	image6.emf	image8.emf
image10.emf	image3.emf	image5.emf	image7.emf	image9.png
$ ls ~/Documents/Work/CRQ/843940/unzipped/xl/embeddings

[ More Info ]

[/software/office/excel] permanent link

Wed, Mar 01, 2017 10:42 pm

Discarding configuration changes for a Juniper SRX router/firewall

If you've been entering commands for configuration changes on a Juniper Neworks SRX router/firewall, which runs the Juniper Network Operating System, Junos OS, but haven't committed those changes to make them active, you can discard them using the command rollback 0. which will replace the "candidate config", i.,e., the one you've been editing, with the active configuration, which is also the boot configuration.
root@Alder# rollback 0
load complete


The device can store multiple prior configurations and you can revert to one of those other prior configurations, instead, using rollback n where n is the number for the prior configuration. You can also rollback to a saved "rescue" configuration with rollback rescue. You an see a list of the stored configurations to which you can revert using the command rollback ?.

[ More Info ]

[/security/firewalls/SRX] permanent link

Tue, Feb 28, 2017 10:57 pm

Viewing Firefox cookie information with sqlite3 on Mac OS X

On a Macintosh, aka Mac, OS X/macOS system, the user profile directory where the Firefox web browser stores its data can be found at "/Users/account_name/Library/Application Support/Firefox/Profiles" where account_name is the relevant user name. The profile directory for the account will be a sequence of 8 characters followed by ".default". E.g.:

$ ls "/Users/jasmith1/Library/Application Support/Firefox/Profiles"

Within that directory will be a cookies.sqlite file within which Firefox stores browser cookies. You can view those cookies outside of Firefox using the SQLite relational database management system software found on OS X/macOS systems. You can examine the sqlite file with the sqlite3 command, which you can run from a command line interface (CLI), i.e., a Bash shell prompt, by opening a Terminal window; the Terminal application is found in the Applications/Utilities directory. You can examine the structure of the database using the SQLite .schema command. There is a moz_cookies table within the database.

[ More Info ]

[/network/web/browser/firefox] permanent link

Sun, Feb 26, 2017 10:23 pm

Obtainining info on the optical drive in a CentOS Linux system

If you need to determine the manufacturer, type, or model of optical disc drive that is in a CentOS Linux system, you can log into the root account and use the dmesg command and pipe the output into the egrep command looking for key terms, such as "cdrom", "dvd", "cr/rw", or "writer" as shown below:

# dmesg | egrep -i 'cdrom|dvd|cd/rw|writer'
[    1.571327] ata1.00: ATAPI: TSSTcorpCD/DVDW SH-S182M, SB02, max UDMA/33
[    1.598476] scsi 0:0:0:0: CD-ROM            TSSTcorp CD/DVDW SH-S182M SB02 PQ: 0 ANSI: 5
[    1.635809] sr 0:0:0:0: [sr0] scsi3-mmc drive: 48x/48x writer dvd-ram cd/rw xa/form2 cdda tray
[    1.635819] cdrom: Uniform CD-ROM driver Revision: 3.20

[ More Info ]

[/os/unix/linux/centos] permanent link

Sat, Feb 25, 2017 10:48 pm

Determining the differences between the current version and a vi swap file

When I attempted to edit a file, index.php, using the vi editor, I saw the following message:

Found a swap file by the name ".index.php.swp"
          owned by: joe   dated: Mon Feb 20 19:36:11 2017
         file name: ~joe/www/UVNC/index.php
          modified: YES
         user name: joe   host name:
        process ID: 19776
While opening file "index.php"
             dated: Mon Feb 20 19:38:44 2017
      NEWER than swap file!

(1) Another program may be editing the same file.  If this is the case,
    be careful not to end up with two different instances of the same
    file when making changes.  Quit, or continue with caution.
(2) An edit session for this file crashed.
    If this is the case, use ":recover" or "vim -r index.php"
    to recover the changes (see ":help recovery").
    If you did this already, delete the swap file ".index.php.swp"
    to avoid this message.

Swap file ".index.php.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:

I hit the q key to return to the Bash shell prompt. When I compared the time stamps on the current version of the file and the .swp file, I saw that the current version had a time stamp 2 minutes after the time stamp for the .swp file.

$ ls -al | grep 'index.php'
-rw-rw-r--. 1 joe joe   7571 Feb 20 19:38 index.php
-rw-r--r--. 1 joe joe  20480 Feb 20 19:36 .index.php.swp

[ More Info ]

[/software/editors/vi] permanent link

Fri, Feb 24, 2017 10:10 pm

Allowing UltraVNC server connectivity through BullGuard Firewall

If you are using BullGuard Firewall, which is part of the BullGuard Internet Security and Antivirus protection software, if you install UltraVNC for remote desktop management, you will see a message stating "VNC server is asking for access to the internet" whenever someone attempts to connect remotely to the system on which BullGuard Firewall is running.

BullGuard Firewall VNC server

[ More Info ]

[/security/firewalls/BullGuard] permanent link

Thu, Feb 23, 2017 10:08 pm

Determining and setting group membership from a command prompt

On a Microsoft Windows system, you can determine the username for an account from a command prompt window using the whoami command as shown below.



In the example above, the account name is enzo and the system name is slartibartfast.

If you want to determine what groups the account belongs to, which would enable you to determine if the account is in the administrators group, you could add the /groups argument to the command as shown below. I added the /fo list option as well to format the output as a list; if that option isn't specified the output will be in table format.

[ More Info ]

[/os/windows/commands] permanent link

Wed, Feb 22, 2017 11:10 pm

PhishMe Phishing Email

I received an email message today stating that all users of a system I use for work must update their security questions on a bi-yearly basis and that my account would be locked out in twenty four hours if my security questions were not updated within that time. Within the message was the Uniform Resource Locator (URL) for the relevant website. The message seemed suspicous, since I would expect to have received prior notices before one informing me I had only 24 hours left to update the questions and also I've not encountered instances of such sites requring security questions to be updated on a periodic basis, though it is common to require passwords to be updated periodically.

When I hovered my mouse pointer over the link in the message, I found that the first part of the name in the fully qualified domain name (FQDN) looked like something I would expect in a site name for my employer, but the ending of the domain name was, which would not be a site I would go to to modify security questions for a work-related system. On my laptop, I use Outlook 2016 as my email; to view the email header for a message in Outlook 2016, you can take these steps, but most email clients provide a mechanism to view a message's header, which will show the originating system and other email servers a message has passed through. Viewing the header information, I saw the following lines:

Received-SPF: Temperror (SPF Temporary Error: DNS 'NoneType' object has no attri
bute 'header') identity=mailfrom; client-ip=; helo=mail.nova.phishme.
<text snipped>
Received: from ( [])	by
<text snipped>
MIME-Version: 1.0
X-Priority: 3
X-PhishMe: Phishing_Training
X-PhishMeTracking: TjaVg7y+fe0Q/<text snipped>

The header lines showed it was a training exercise, since PhishMe is a company that helps organizations train their employees to avoid phishing attempts. But, if you have a question about whether a message you have received is legitimate or is a spoofed message that appears to come from a legitimate sender, such as your employer, bank, or some source you would trust, it is best to type in a link rather than click on one within an email, unless you observe the actual link very closely. It can also help to identify a message sent by someone spoofing a legitimate sender by examining message headers. It is trivially easy for a spammer, malware purveyor, or other malefactor to spoof a "From" address, so you should never assume that a "From" address is a reliable means of identifying a message's actual sender.

[/security/scams/phishing] permanent link

Tue, Feb 21, 2017 11:21 pm

Dovecot not responding

A user reported that she wasn't receiving any email. When I logged into the mail servers, which runs Dovecot for POP3/POP3S and used Telnet to connect to port 110, the well-known port for POP3, I didn't get any response after I entered the user command, so I exited to the telnet prompt with Ctrl-].

$ telnet 110
Connected to
Escape character is '^]'.
user nell
telnet> quit
Connection closed.

I logged into the root account and checked today's and yesterday's maillog files for any references to Dovecot or POP3 issues, but saw none.

# grep -i dovecot /var/log/maillog
# grep -i dovecot /var/log/maillog.1
# grep -i pop3 /var/log/maillog.1
# grep -i pop3 /var/log/maillog

[ More Info ]

[/network/email/dovecot] permanent link

Tue, Feb 21, 2017 9:09 pm

Viewing the list of IP address ranges for AmazonAWS

If you need to create firewall rules for outgoing connectivity to Amazon Web Services (AWS) addresses, you can obtain a complete listing of the IP address ranges that Amazon uses in JavaScript Object Notation (JSON) format from AWS IP Ranges Are Now Available in JSON Format - the download URL for the file is

I downloaded the IP address range file from using cURL, which is present on Apple OS X/macOS systems and is available for Linux and many other operating systems, including Microsoft Windows - see Releases and Downloads.

$ curl -o ip-ranges.json
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   99k  100   99k    0     0   191k      0 --:--:-- --:--:-- --:--:--  191k

The following Python script can be used to extract just the Classless Inter-Domain Routing (CIDR) address blocks, i.e., the ip_prefix information from the JSON data stored in the ip-ranges.json file downloaded from the Amazon website and display it.

import json

data = json.load(open('ip-ranges.json'))
for d in data["prefixes"]:
    print d["ip_prefix"]

[ More Info ]

[/languages/python] permanent link

Mon, Feb 20, 2017 10:43 pm

Determining the last system image backup time for a Windows 10 system

I backed up a Windows 10 system to an external USB disk drive using the backup utility that comes with the operating system that can be run by right-clicking on the Windows Start button then choosing Control Panel then Backup and Restore (Windows 7), which is found beneath System and Security, and then choosing Create a system image. If you create a system in that manner and then later wish to know the date and time you backed up the system without reattaching the drive you used, you can do so from a command prompt window with administrator privileges by using the wbadmin get versions command as shown below:

C:\WINDOWS\system32>wbadmin get versions
wbadmin 1.0 - Backup command-line tool
(C) Copyright 2013 Microsoft Corporation. All rights reserved.

Backup time: 2/19/2017 8:31 PM
Backup target: 1394/USB Disk labeled Seagate Backup Plus Drive(E:)
Version identifier: 02/20/2017-01:31
Can recover: Volume(s), File(s), Application(s), Bare Metal Recovery, System State
Snapshot ID: {d4a62a80-ac6f-4aba-8886-6ba570c1284a}


Once you have the version identifier(s), you can use it to view the details regarding what volumes were backed up on the system to the external USB drive using a command in the form wbadmin get items -version:version_id.

[ More Info ]

[/os/windows/utilities/backup] permanent link

Sun, Feb 19, 2017 10:45 pm

Deleting a hidden file from a command prompt on a Windows system

The del command can be used at a command prompt on a Microsoft Windows system to delete files. But, if you try to delete a file using that command without specifically specifying that you wish to apply the command to a hidden file, you will receive a message stating windows could not find the file. To delete a hidden file, you need to use the /ah parameter before the file name as shown below.
C:\Users\enzo\Documents>dir /ah *.swp
 Volume in drive C is Windows
 Volume Serial Number is B688-ED25

 Directory of C:\Users\enzo\Documents

02/18/2017  12:51 PM            12,288 .system.html.swp
               1 File(s)         12,288 bytes
               0 Dir(s)  1,954,264,215,552 bytes free

C:\Users\enzo\Documents>del .system.html.swp
Could Not Find C:\Users\enzo\Documents\.system.html.swp

C:\Users\enzo\Documents>del /ah .system.html.swp


The syntax for the del command is shown below:

C:\>del /?
Deletes one or more files.

DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names

  names         Specifies a list of one or more files or directories.
                Wildcards may be used to delete multiple files. If a
                directory is specified, all files within the directory
                will be deleted.

  /P            Prompts for confirmation before deleting each file.
  /F            Force deleting of read-only files.
  /S            Delete specified files from all subdirectories.
  /Q            Quiet mode, do not ask if ok to delete on global wildcard
  /A            Selects files to delete based on attributes
  attributes    R  Read-only files            S  System files
                H  Hidden files               A  Files ready for archiving
                I  Not content indexed Files  L  Reparse Points
                -  Prefix meaning not

If Command Extensions are enabled DEL and ERASE change as follows:

The display semantics of the /S switch are reversed in that it shows
you only the files that are deleted, not the ones it could not find.


[/os/windows/commands] permanent link

Sat, Feb 18, 2017 3:30 pm

Changing the host name for a Windows system from a command prompt

There are a variety of ways you can determine the system name for a Windows computer from a command line interface (CLI), such as a command prompt or PowerShell prompt window. But what if you wish to rename the computer from a command line interface? You can obtain a command prompt and then use a Windows Management Instrumentation Command-line (WMIC) command in the form shown below where oldname is the curent name of the system and newname is the new name you wish to assign to the system.

wmic computersystem where caption='oldname' rename newname

[ More Info ]

[/os/windows/commands/wmic] permanent link

Fri, Feb 17, 2017 10:55 pm

Email to Text Message

If you would like to be notified of a system event by a SMS messsage, i.e., a text message, or otherwise have a need to send information from a computer to a phone by a text message, you can use a text to email capability provided by some phone service providers. To send a text message via email to a Verizon user, you can use the Verizon phone number for the person followed by - don't put any dots nor dashes in the phone number, just the digits of the phone number. E.g., if the person's phone number is 555-765-4321, you would send the message to If the person uses Sprint for phone and text messaging service, you would append to the 10-digit phone number, i.e., If the user has AT&T for his/her phone service, you can text the user by appending to the number, e.g. For T-Mobile, you can append to the phone number.

[ More Info ]

[/network/email] permanent link

Tue, Feb 14, 2017 11:14 pm

Determining S.M.A.R.T disk drive status from a command prompt

Many hard disk drives have a Self-Monitoring, Analysis and Reporting Technology (S.M.A.R.T.) capability. On a Microsoft Windows system, you can use a utility such as SpeedFan to query the S.M.A.R.T, or SMART, information for a drive. You can also check the status of a drive using a Windows Instrumentation Command-line (WMIC) command by issuing the command wmic diskdrive get status at a command prompt, though you won't get the same level of detail. But if you have multiple drives in or atached to the system, you will need to use an additional parameter to identify which status applies to which drive. You could include the size and/or model, e.g.:

C:\Users\Lila>wmic diskdrive get status, size, model
Model                                   Size           Status
Seagate Backup+  Desk SCSI Disk Device  5000970240000  OK
Seagate Backup+ Desk USB Device         4000776192000  OK
Generic- Compact Flash USB Device                      OK
Generic- SD/MMC USB Device                             OK
Generic- MS/MS-Pro USB Device                          OK
WD My Book 1140 USB Device              2000363420160  OK
Generic- SM/xD-Picture USB Device                      OK
WDC WD4003FZEX-00Z4SA0 ATA Device       4000784417280  OK


[ More Info ]

[/os/windows/commands/wmic] permanent link

Sun, Feb 12, 2017 5:44 pm

Configuring Windows 7 to hibernate on low UPS battery power

If you have an uninterruptible power supply (UPS) to provide battery backup for a Microsoft Windows system in the event of a power outage, you may want to change the default setting for the action that Windows takes when the battery charge is nearing depletion. The default setting is to put the system in sleep mode where the system saves the memory state to disk and stops most activities on the system, so that the system is using very little power. But, if the battery charge becomes totally depleted, if a system is in sleep mode when that happens, you will lose any unsaved work. You can reconfigure Windows to hibernate the system, instead. When the system goes into hibernation, the contents of memory are saved to disk in such a way that when the system is rebooted, you will be back to the state it was in before it was hibernated, so you haven't lost unsaved work, such as open documents in a word processor, etc.

[ More Info ]

[/os/windows/win7] permanent link

Sat, Feb 11, 2017 10:27 pm

Using Python to query an SQLite database and return a count of records

I have an SQLite database that I use to track work requests on my MacBook Pro running OS X El Capitan (10.11.6) . Every week I need to determine the number of change requests I've reviewed and approved in the last week. I have been running SQL commands from a text file using sqlite3, but I wanted to start using a Python script, instead, since I want to everntually perform some additional queries as well and display the results as a web page. Initially, I had some problems displaying the record count, but found I could use cursor.fetchone() to display the count. The script I currently have consists of the following code:


import sqlite3
conn = sqlite3.connect('/Users/jasmith1/Documents/Work/CRQ/CRQ.db')
cursor = conn.cursor()

sql = 'SELECT COUNT(*) FROM Tasks WHERE Approved >= date(CURRENT_DATE,"-7 day")'
result = cursor.fetchone()
numApproved = result[0]
print numApproved

The first step I need to take is to import the sqlite3 module for use in Python. I then need to create a connection object for the database which I assign to conn. After that I need to create a cursor instance that I will use to execute an SQL statement. I assign the SQL statement to the variable sql (the name is arbitrary) and then execute the statement with cursor.execute(sql). The variable result is then assigned the results of cursor.fechone(). If I printed the contents of the result variable, I would see (5,), if the count was 5, since the result is a tuple with one element, but I want to see just the number, so I set numApproved to be result[0]. Instead of setting numApproved to result[0] and printing numApproved, I could skip a step and use the following two lines after sursor.execute(sql):

(numApproved,) = cursor.fetchone()
print numApproved

If I make the script excecutable with chmod 755 and then run the script, I will then see just the number of reccords approved within the last week:

$ chmod 755
$ ./


  1. sqlite3 — DB-API 2.0 interface for SQLite databases
    Python documentation

[/languages/python] permanent link

Fri, Feb 10, 2017 10:37 pm

Attempting to kill unkillable processes

When I tried to update WireShark on a Windows 10 system to version 2.2.4, I saw the message "Wireshark or one of its associated programs is running. Please close it first."

Wireshark or one of its associated programs is running

I had to forcibly terminate two Wireshark processes with the Windows Task Manager prior to that message appearing in order to proceed with the upgrade, since I had seen a message that the installation could not proceed with Wireshark running, yet those instances of Wireshark wouldn't close when I tried to close them normally; one of the two was due to my trying a second time to start Wireshark when there was a long delay before it appeared.

I ran the Windows Task Manager with administrator privileges by typing Task Manager in the Cortana "Ask me anything" field and then right-clicking on Task Manager when it was returned in the search results. I saw Dumpcap, which is a process Wireshark and TShark run to perform packet capture, listed in the process list, so clicked on it to select it and then clicked on the End Task button, but that didn't actually terminate the process.

[ More Info ]

[/os/windows/processes] permanent link

Thu, Feb 09, 2017 10:51 pm

Installing MySQL on OS X El Capitan

The steps below can be taken to install the MySQL relational database management system software on an Apple OS X/macOS system. The steps were taken for MySQL version 5.7.17 on a MacBook Pro laptop running OS X El Capitan, but should be similar, if not exactly the same for other versions of MySQL and on other versions of OS X.

[ More Info ]

[/os/os-x] permanent link

Wed, Feb 08, 2017 8:41 pm

Running SQL commands from a text file using sqlite3

Every week I need to determine the number of tasks I reviewed and approved in the prior week. I track the tasks in a database on my MacBook Pro laptop using the SQLite utility that is part of the OS X operating system - see Using SQLite. I have a database named "CRQ" that contains a table named "Tasks". The schema for the table is shown below; approval dates are stored as integers; SQLite does not have a storage class specifically for dates, instead, the built-in Date And Time Functions of SQLite are capable of storing dates and times as TEXT, REAL, or INTEGER values1.

$ sqlite3 ~/Documents/Work/CRQ/CRQ.db
SQLite version 2015-05-20 18:17:19
Enter ".help" for usage hints.
sqlite> .schema Tasks
`Received`	INTEGER,
`Reviewed`	INTEGER,
`Approved`	INTEGER,
`Notes`	TEXT,
`Summary`	TEXT
sqlite> .exit

I can open the database and manually type the command to count the records with an approval date on or after a date I specify using an SQL command like the one below:

$ sqlite3 ~/Documents/Work/CRQ/CRQ.db
SQLite version 2015-05-20 18:17:19
Enter ".help" for usage hints.
sqlite> SELECT COUNT(*) FROM Tasks WHERE Approved >= '2017-02-01';

[ More Info ]

[/software/database/sqlite] permanent link

Tue, Feb 07, 2017 9:43 pm

Attachments not visible in Outlook 2016

I recently received an update from Microsoft® Office 2011 on my MacBook Pro laptop to Microsoft Office 2016. Included with that update was the 2016 version of Microsoft Outlook for Mac, though if I click on Outlook from Outlook's menu bar and then select About Outlook, I see the following version information (image):

Version 15.27 (161010)
Product ID: 03109-000-000001
License: Volume License

One annoying issue I've encountered is that I don't see a way to view attachments sent with some messages within Outlook. I can see a paperclip icon to the right of the sender's name in the left pane of the outlook window, which indicates the message has been received with an attachment, but in the right pane where the contents of the window is displayed, there is no indication that the message has an attachment. And, if I double-click on the message to open it in a separate window there is no indication the message has an attachment. The only way I've found to easily gain access to the attachment is to view the message in Outlook Web App in a web browser. In its right pane, I see a "To:" line followed by a "CC:" line and then an "Attachments:" line with the name of the attachment shown. I can click on the attachment name to open of save it.

In Outlook 2016, if I right-click on the first message where I observed this problem and choose View Source, I see the following in the header lines, which indicates the message does indeed have an attachment:

Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: yes

[ More Info ]

[/network/email/clients/outlook/2016] permanent link

Mon, Feb 06, 2017 10:59 pm

Using Python scripts with Apache on OS X El Capitan

If you've got the Apache web server software working under OS X El Capitan, but want to use Python scripts with Apache, the following steps will allow you to run Python scripts from a cgi-bin directory.

First, ensure that the hash sign (#) is removed from the LoadModule cgi_module libexec/apache2/ in /etc/apache2/httpd.conf. If you need to remove the hash/pound sign, restart Apache after modifying the file, which you can do with sudo apachectl restart. You will also need to use the sudo command to edit the file, if you edit it with a text editor such as GNU nano or vi.

[ More Info ]

[/os/os-x/apache] permanent link

Sun, Feb 05, 2017 10:51 pm

Using Perl with Apache under OS X El Capitan

If you've got Apache running on your Mac OS X system and want to be able to display the output of Perl programs, you need to remove the hash sign (#) from the following line in /etc/apache2/httpd.conf.

#LoadModule cgi_module libexec/apache2/

You will neeed to edit the file with a text editor, such as the TextEdit app found in the Applications directory, or GNU nano or vi. And you will need to run the editor with root, i.e., administrator privileges by using the sudo command in order to be able to save modifications to the file. E.g.:

sudo nano /etc/apache2/httpd.conf

[ More Info ]

[/os/os-x/apache] permanent link

Sat, Feb 04, 2017 10:44 pm

PHP for Apache on OS X El Capitan

If you are running an Apache web server under OS X El Capitan and want to use PHP with Apache, you will need to take some additional steps after you've got Apache running on OS X/macOS. Once you've got Apache working on the system, you can create a .php file, e.g. phptest.php and have the page displayed by your browser if you visit the page, but PHP code within the page won't be executed. E.g., suppose the phptest.php page contains the following code:

<html lang="en">
<meta charset="UTF-8">
<title>PHP Test</title>


<h2>A test page</h2>

<?php phpinfo(); ?>


If I visit the page using a browser, the HyperText Markup Language (HTML) code on the page will be displayed, e.g. the "A test page" heading will be displayed, but the information that the phpinfo() command would display regarding the PHP settings for a system on which PHP is working won't be displayed. You could also try a simple PHP echo command, e.g. <?php echo "This is the output from a PHP echo command."; ?>, but the output from that command would not be displayed, either.

[ More Info ]

[/os/os-x/apache] permanent link

Fri, Feb 03, 2017 10:54 pm

Running an Apache web server under OS X El Capitan

Apple's OS X/macOS operating system (OS) comes with the Apache webserver software, which I decided to enable on my MacBook Pro laptop running OS X El Capitan, version 10.11.6 on the laptop.

The Apache web server software isn't running by default and you can no longer enable it through the Sharing option under System Preferences as in some earlier versions of OS X, but you can start it from a command line interface (CLI) by opening a Terminal window (Terminal is found in the Applications/Utilities folder), with the command sudo apachectl start. Once you start the software, you will see the system is listening on the well-known port for Hypertext Transfer Protocol (HTTP) connections, port 80, by using the netstat command.

$ sudo apachectl start
$ netstat -a | grep http | grep LISTEN
tcp46      0      0  *.http                 *.*                    LISTEN     

[ More Info ]

[/os/os-x] permanent link

Thu, Feb 02, 2017 10:04 pm

UltraVNC not responding to connection attempts

A user reported he was unable to connect to a Microsoft Windows 8 system functioning as a VNC server using UltraVNC. The remote vncviewer program was reporting "Failed to connect to server !" I logged into the system and verified that the system was listening on the registered port for VNC, port 5900 using the netstat command.
C:\Users\Collen>netstat -a | find "5900"
  TCP           Speleologist:0         LISTENING


I used windump, a free packet capture tool for Microsoft Windows systems, similar to the tcpdump tool found on OS X/macOS and Linux systems, to verify that the system was seeing the incoming connections to network port 5900.

[ More Info ]

[/os/windows/software/remote-control/vnc/ultravnc] permanent link

Wed, Feb 01, 2017 10:42 pm

Allowing the untrusted interface on a Juniper SRX router/firewall to be pinged

If you wish to allow the untrust interface, which is usually the Internet-facing interface on a Juniper Networks SRX router/firewall running the Junos operating system, to be pinged from external systems, you can use the command set security zone security-zone untrust interface ge-0/0/0.0 host-inbound-traffic system-services ping after placing the device in configuration mode with the configure command, presuming, of course, that the untrust interface is ge-0/0/0.0. If it is some other port on the router, substitute that port identifier, instead.

root@Alder> configure
Entering configuration mode

root@Alder# set security zone security-zone untrust interface ge-0/0/0.0 host-inbound-traffic system-services ping

root@Alder# commit
commit complete


Afer committing the configuration, you should be able to successfully ping the IP address of the untrusted, i.e., Internet side of the device.

[/security/firewalls/SRX] permanent link

Tue, Jan 31, 2017 11:10 pm

Creating a rescue configuration for a Juniper SRX Firewall

You can create a rescue configuration to be used in the event you make some change to a Juniper Networks SRX router/firewall, which runs Junos OS, that makes the device inaccessible. With a rescue configuration saved on the device, you can return the router/firewall to a known operational state. The rescue configuration saved on the device can provide a last resort means of quickly restoring the device to operational status. You can use either the web-based graphical user interface (GUI) method to create a saved rescue configuration via a web browser connection to the system or a command line interface (CLI) method.

[ More Info ]

[/security/firewalls/SRX] permanent link

Mon, Jan 30, 2017 10:49 pm

Checking a website's security certificate with OpenSSL

You can use OpenSSL, which is commonly installed on Mac OS X and Linux systems and which is also available for other operating systems (the source code can be downloaded from OpenSSL Downloads and a Windows implementation is available at OpenSSL for Windows), to check the security certificate of a website using an openssl command in the form openssl s_client -showcerts -connect fqdn:port where fqdn is the fully qualified domain name (FQDN) of the website and port is the port that the website is listening on for HTTPS connections, which is usually well-known port 443, though it may sometimes be another port, such as the registered port 8443. The showcerts option instructs openssl to show all certificates in the public key certificate chain.

[ More Info ]

[/security/encryption/openssl] permanent link

Sun, Jan 29, 2017 7:52 pm

Setting up the Windows Subsystem for Linux on Windows 10

With the Anniversary Edition of the Microsoft Windows 10 operating system (OS), Microsoft provides a an Ubuntu-based Bash shell that will allow you to run Linux software on your Microsoft Windows 10 system. If you are unsure whether the Anniversary Edition update to Windows 10 is installed on a system, you can follow the steps listed at Determining which version of Windows 10 is installed. You can also use the instructions at Determining the version of Microsoft Windows from the command line. The Anniversary Edition is version 1607 of Windows. Or just checking the software build will reveal whether the Anniversary Edition is installed; if you see "build 14393" or later, then the Anniversary Edition is installed on the system.

The Windows system will also need to be using the 64-bit version of Windows 10 rather than the 32-bit version - see Determining if your version of Windows is a 32-bit or 64-bit version for methods that can be used to determine if the installed version of Windows is a 32-bit or 64-bit version.

If the version of Windows is appropriate, then you can follow these step by step instructions to install the Linux subsystem.

[/os/windows/win10] permanent link

Sat, Jan 28, 2017 9:46 pm

Setting the default mail application on Windows 10

If you wish to set or change the default mail app on a Microsoft Windows 10 system, you can take the following steps:
  1. Click on the Windows Start button.
  2. Click on Settings.
  3. Click on System.
  4. Click on Default apps.
  5. Click on "Choose a default" under Email.
  6. You should then see a list of email applications on the system; click on the one you wish to be the default mail application.
  7. Once you've chosen an email program, you can click on the "X" at the upper, right-hand corner of the window to close it.

[ More Info ]

[/os/windows/win10] permanent link

Fri, Jan 27, 2017 10:29 pm

Changing the UltraVNC passwords

To change the password used for connectivity to a system running the UltraVNC free and open-source software that provides remote-administration/remote-desktop-software functionality for Microsoft Windows, select the icon representing UltraVNC in the system tray; it has an eye within it.

UltraVNC system tray icon

Right-click on it and select Admin Properties. At the Admin Properties window, you can type a password in the "View-Ony Password" that can be used to allow remote users access to the system via VNC. It will only check the first 8 characters of a password.After making any password change, click on the Apply button.

[ More Info ]

[/os/windows/software/remote-control/vnc/ultravnc] permanent link

Thu, Jan 26, 2017 10:56 pm

You can't open the application "" because it is not responding

I killed Firefox on my MacBook Pro laptop running OS X Yosemite (10.10.5) by clicking on the Apple icon at the upper, left-hand corner of the screen then selecting Force Quit and then selecting Firefox and clicking on the Force Click button. But when I tried to reopen Firefox, I saw the message 'You can't open the application "" because it is not responding.'

I clicked on OK and used Force Quit Applications again. I saw Firefox in the list and again forced it to quit. I then clicked on the Firefox icon in the Dock at the bottom of the screen again, but Firefox didn't appear to open. I double-clicked on it again, but it still didn't appear to open, though it appeared in the Force Quit Applications list again with "not responding" appearing next to its entry in the list of open apps. I tried clicking on the Firefox icon in the Dock a third time and this time saw the 'You can't open the application "" because it is not responding' message again, though reopening Force Quit Applications again did not show "not responding" next to the Firefox entry in its list. Nor was any other application listed as being unresponsive. I tried the Force Quit step again. Firefox remained in the list until I closed and reopened Force Quit Applications. Though Firefox wasn't in the Force Quit Applications list, I did see a process associated with Firefox when I used the ps command to view processes running on the system.

$ ps -ef | grep -i Firefox | grep -v grep
723184451  6861     1   0  8:46AM ??         0:00.03 /Applications/
nts/MacOS/ /Library/Internet Plu
g-Ins/JavaAppletPlugin.plugin -greomni /Applications/
omni.ja -appomni /Applications/ -appdi
r /Applications/ 1635 gecko-crash-server-pipe.
1635 org.mozilla.machname.776527788 plugin

[ More Info ]

[/os/os-x] permanent link

Wed, Jan 25, 2017 11:08 pm

Extracting information from a pem file

The X.509 standard is used to manage digital certificates used for public key encryption. One of the filename extensions used for X.509 certificates is .pem, which stands for "Privacy Enhanced Mail". These certificates are Base64 encoded DER certificates. If you have a .pem certificate and want to view information about the contents of the certificate, you can do so with OpenSSL software, which is commonly found on Linux and Mac OS X systems, but is available for other operating systems as well. If you just want to view the expiration date for a certificate you can use an openssl command like the one below:

$ openssl x509 -enddate -noout -in cacert.pem
notAfter=Aug 13 23:59:00 2018 GMT

[ More Info ]

[/security/encryption/openssl] permanent link

Tue, Jan 24, 2017 9:28 pm

Viewing available upgrades in Radia Client Automation Application Self-Service Manager

If the Radia Client Automation Self-Service Manager is in use on a Mac OS X system, the app may be found in the Applications/HPCA/Agent folder on the system's disk drive. You can double-click on Application Self Service to see what software updates are available for the system. If the system isn't connected to the corporate network, e.g., if you need to establish a virtual private network (VPN) connection to be able to connect to the server, and you see the message "Error code 769 encountered during the connect. Do you want to work offline?", you can click on Yes to still see available updates stored on the system which you can install.

[ More Info ]

[/software/hpca] permanent link

Mon, Jan 23, 2017 10:07 pm

Firefox Profile Location on an Apple OS X System

The Firefox web browser stores information about its user settings and state in a "profile" directory for each user. On a Mac OS X system (now macOS), such as my MacBook Pro laptop, you can have Firefox open a Finder window showing you the relevant profile folder or you can find it from a command line interface (CLI), i.e., a shell prompt, by opening a Terminal window (you can find the Terminal program in the Applications/Utilities folder). For the latter method, you can see the location of the profile directory by issing the command ls -l ~/Library/Application\ Support/Firefox/Profiles. (you need to put a backslash before the space in the directory path)

$ ls -l ~/Library/Application\ Support/Firefox/Profiles
total 0
drwx------  53 jasmith1  ABC\Domain Users  1802 Jan 23 11:56 bgq13udo.default

[ More Info ]

[/network/web/browser/firefox] permanent link

Sun, Jan 22, 2017 9:32 pm

Minecraft memory usage

You can control the amount of memory used by Java for the Minecraft sandbox video game by setting parameters in the server_start.bat file located in the directory where the Minecraft software was installed. To reduce the contention of the Minecraft server with other software running on the system for the system's memory, you can specify the maximum memory it will consume with a Xmx parameter. E.g., the following example uses a server_start.bat file where the maximum of memory that Java will use for running the game software is 1 gigabyte (GB)

java -Xmx1G -Xms1G -jar forgeserver.jar nogui

[ More Info ]

[/os/windows/software/games/minecraft] permanent link

Sat, Jan 21, 2017 11:33 pm

Error occurred message when upgrading freeSSHd

I needed to upgrade freeSSHd, which is free Secure Shell (SSH) server software for Microsoft Windows systems, on a Windows 8 system. The software allows remote users to log into a command line interface on the Windows system via SSH and provides the capability to transfer files via the SSH File Transfer Protocol (SFTP). When I attempted to install the latest version of the software over a prior version, however, the installation was unsuccessful. If you see the following error message, you may need to stop the SSHD service prior to performing the upgrade:

An error occurred while trying to replace the existing file:
DeleteFile failed; code 5.
Access is denied.

Click Retry to try again, Ignore to skip this file (not recommended), or Abort to cancel installation.

[ More Info ]

[/os/windows/network/ssh/freeSSHd] permanent link

Fri, Jan 20, 2017 10:02 pm

Installing an encryption plugin for UltraVNC

An encryption plugin is available for the UltraVNC open source remote administration/remote desktop software. The SecureVNC Plugin has the following specifications:

[ More Info ]

[/os/windows/software/remote-control/vnc/ultravnc] permanent link

Thu, Jan 19, 2017 11:06 pm

Setting up a Juniper Networks SRX100 Router/Firewall

You can configure a Juniper Networks router/firewall, such as a Dell J-SRX100H, which is manufacturered by Juniper Networks by connecting a network cable between one of the 0/1 through 0/7 ports on the SRX100; don't use the 0/0 port, because that is the default port for the "untrusted" side of the device, i.e., for connections on the "outside" or Internet-facing side of the device. If you have the connected device set to obtain an IP address by the Dynamic Host Configuration Protocol (DHCP), it will be assigned an address from the subnet, You can then log into the router by opening a browser window and pointing the browser to

[ More Info ]

[/security/firewalls/SRX100] permanent link

Wed, Jan 18, 2017 10:46 pm

Allowing inbound connectivity for an application under Windows 8

To permit inbound access to an application through the Microsoft Windows Firewall on a Windows 8 system, you can take the following steps:
  1. Move the mouse pointer to the lower, left-hand corner of the window until you see the Windows Start button appear. When you see it, right-click on it and select Control Panel.
  2. From the Control Panel, select System and Security.
  3. Click on Windows Firewall.
  4. Click on Allow an app or feature through Windows Firewall.
  5. Click on the Change settings button. Once you do so, the "Allow another app" button will no longer be grayed out and you can click on it.
  6. Find the application for which you wish to allow access through the firewall and click on it to highlight and select it.
  7. Click on the Add button. You should then see the program added to the list of apps allowed to communicate through Windows Firewall. By default access is allowed on "private" networks, such as your home or work network. If you also want to allow access on "public" networks, such as you would find at a coffe shop or airport, you can also click the check box for "public".
  8. Click on the OK button. You can then close the Windows Firewall window. You should be able to connect to whatever port or ports the application opens now from another system on the same local area network (LAN).

[ More Info ]

[/os/windows/win8] permanent link

Tue, Jan 17, 2017 10:30 pm

While using Wireshark to troubleshoot a Domain Name System (DNS) issue for a server that sits behind a firewall that performs Network Address Translation (NAT), I noticed a DNS response coming back where Wireshark showed the following in the "Info" field for a packet:

Standard query response 0x21e1 No such name PTR SOA

The server for which I was performing the troubleshooting has an IP address of, which is a private IP address. There are 3 private IP address ranges; these ranges are also sometimes referred to as "RFC 1918 addresses", since the private IP address space is defined in RFC 1918 . A Request for Comments (RFC) is a document published by the Internet Engineering Task Force (IETF). Some RFCs, such as RFC 1918 become Internet Standards.

[ More Info ]

[/network/dns] permanent link

Mon, Jan 16, 2017 10:35 pm

Selecting records containing a string in a MySQL or MariaDB database

If you wish to select only the records containing a particular string, e.g., some word, etc., from a MySQL or MariaDB database table then you can use LIKE in the SQL SELECT command. E.g., if I have a table named Books that contains book information and one of the columns in the database is Title, I can select any books from the database where the title contains "Unix" with the command below:

SELECT * FROM Books WHERE Title LIKE "%Unix%";

The percent sign (%) serves as a wildcard character indicating that any number of other charcters will match it. So by putting the percent sign before and after the word Unix, the expression will find any books with titles that have "Unix" anywhere in the title, e.g., at the beginning, middle, or end of the title. If I only wanted to find those records in the Books table where the title began with the word Unix, I could use the command below:

SELECT * FROM Books WHERE Title LIKE "Unix%";

Any characters that came after the word Unix would match, but the title would need to start with "Unix". To find only those books where the word appears at the end of the title, I could use the following command:

SELECT * FROM Books WHERE Title LIKE "%Unix";

If I wanted, instead, to find all of the records where the title doesn't contain the word "Unix", I could put NOT before LIKE.

SELECT * FROM Books WHERE Title NOT LIKE "%Unix%";

[/software/database/mysql] permanent link

Sun, Jan 15, 2017 10:30 pm

Turning on network discovery and file sharing on a Windows 8 system

If you wish to see folders from other Microsoft Windows systems on a local area network (LAN) or those shared from Linux systems via Samba, you may need to turn on network discovery on the Windows system(s) in order to see the shared folder. E.g., if you double-click on Network in the Windows File Explorer and see "Network discovery and file sharing are turned off. Network computers and devices are not visible. Click to change...", click on the message to enable network discovery.

[ More Info ]

[/os/windows/win8] permanent link

Sat, Jan 14, 2017 11:07 pm

Determining or changing the system name for a computer running Windows 8

To determine the system name for a computer running the Microsoft Windows 8 operating system, you can right-click on the Windows Start Button at the lower, left-hand corner of the screen. If you don't see it, hit the Esc key and move the mouse pointer to the lower, left-hand corner of the screen where it should appear. You will see the system's name listed in the "Computer name, domain, and workgroup settings" section. If you want to give the system a new name, click on Change settings and then click on the Change button.

If you want to obtain the information through a command-line interface (CLI) method, instead, you can do so either at a command prompt or PowerShell prompt.

[ More Info ]

[/os/windows/win8] permanent link

Fri, Jan 13, 2017 10:27 pm

Deleting up to a word or back to a word in the Vi or Vim editor

In the vi or Vim text editor, you can delete all characters on a line up to a specified word by placing the cursor on the line at the point where you wish to start the deletion then hit the d key followed by the slash key followed by the word up to which you wish to remove the characters on the line. E.g., suppose you have the following line:

If you can force your heart and nerve and sinew To serve your turn long after they are gone, And so hold on when there is nothing in you Except the Will which says to them: “Hold on”;

From the poem If— by Rudyard Kipling (1865-1936)

If you wished to delete all of the text on the line from the word "To" up until, but not including the word "And" in "And so hold on...", while in command mode, not insert mode, you could move the cursor to the "T" in "To" and then hit the d key followed by the forward slash key (/) and then type And (make sure you use the matching capitalization). The line would then appear as shown below.

If you can force your heart and nerve and sinew And so hold on when there is nothing in you Except the Will which says to them: “Hold on”;

Suppose, instead, you had the cursor at the word "To" as before, but wanted to delete backwards through the word "If", i.e., all the way to the beginning of the line, instead. You could then hit the d key while in command mode, then hit the question mark (?) key and type If. You would then have the text below.

To serve your turn long after they are gone, And so hold on when there is nothing in you Except the Will which says to them: “Hold on”;

For the backwards deletion, the word you type after the question mark is included in the deletion. In this case, if you wished to delete backwards to the beginning of the line, you could also have hit the d key followed by the ? key and then hit the caret (^) key, which represents the beginning of the line. Likewise, you could hit the dollar sign ($) key to delete forward to the end of the line, which it represents, or you could just hit the D key, instead of the lower-case "d" to delete from the current cursor position to the end of the line.

[/software/editors/vi] permanent link

Thu, Jan 12, 2017 10:13 pm

Whitelisting email from a sender or domain using GoDaddy's email service

If you are using Godaddy's email service and email sent from a particular sender isn't showing up in your inbox, check the bulk mail folder, since there is a possibility that the mail was treated as junk email and placed there. To keep email from a particular sender from being subjected to checks that may result in email from that sender going into the bulk mail folder or never appearing in any folder in your account, you can add the sender's email address to a list of whitelisted email addresses, i.e., ones that won't undergo the normal checks to ascertain if the email is email spam, which can sometimes result in false positives, i.e., a legitimate email you would want to receive is mistakenly classified as spam by a software algorithm that checks all incoming email. To whitelist an email address or an entire domain, e.g., all email from any email address at, take the following steps while logged into your GoDaddy email account through the web interface to your email account.

[ More Info ]

[/network/email/godaddy] permanent link

Wed, Jan 11, 2017 10:36 pm

tar extraction errors - Cannot utime: Operation not permitted

I needed to copy the contents of one directory belonging to a user from one Linux system to another. While logged into her account on the source system, I created a tar file, aka a "tarball", of the directory with the command tar -cvf game.tar game to copy the contents of her "game" directory and all of its subdirectories to the tar file. The tar file was about 20 MB in size, so I compressed it with the gzip command gzip game.tar resulting in a game.tar.gz file about 5 MB in size, which I transferred to the destination system. While logged into her account on the destination system, I uncompressed the .gz file with gunzip game.tar.gz and then attempted to extract the contents of the tar file into the same directory on the destination system as on the source system. The directory already existed on the destination server because I had many months ago copied everything in her home directory from the source to the destination system. When I ran the command tar -xvf game.tar to extract the contents of the tar file, I saw files extracted, but I also saw several "Cannot open: File exists" lines in the output from the command, which terminated prematurely with the following lines:

tar: game/Update: Cannot open: File exists
tar: game/FAQ: Cannot open: File exists
tar: game/CONVERT.22: Cannot open: File exists
tar: game/BETA: Cannot open: File exists
tar: game: Cannot utime: Operation not permitted
tar: Exiting with failure status due to previous errors

[ More Info ]

[/os/unix/commands] permanent link

Tue, Jan 10, 2017 10:47 pm

Determining which version of Windows 10 is installed

There have been various iterations of Microsoft Windows 10 since it was first released. Though you might think of Windows 10 as one version compared to Windows XP, Vista, 7, 8, etc., but there are versions of Windows 10 itself and "builds" within those versions. You can determine which version of Microsoft Windows 10 is installed on a system running Windows 10 by typing winver in the Cortana "Ask me anything" field. You will then see a window, such as the one below, displaying the version and build number of the operating system. In the example shown below from a Dell laptop, the system is running Version 1511 build 10586.713 of the Windows 10 operating system (OS), which is the "November Update" to the OS.

Windows 10 version and build information

[ More Info ]

[/os/windows/win10] permanent link

Mon, Jan 09, 2017 10:32 pm

Thunderbird and Proxy Server Settings

When attempting to check email after installing Mozilla Thunderbird on a Windows 10 system and configuring an email account in Thunderbird, instead of email being downloaded, Thunderbird would show "Connecting to" and seemed to be indefinitely stuck at that point. When I opened Wireshark to observe the network traffic between the Windows 10 laptop and the email server, I didn't see any traffic whether Thunderbird was configured to use the Post Office Protocol version 3 (POP3) port 110 or the secure version of the protocol POP3S on port 995. I set the Wireshark filter to be tcp.port eq 110 || tcp.port eq 995. I didn't see any traffic between to/from the server when I changed the filter to look for traffic to/from the IP address of the server with ip.addr == where was the IP address of the server. After puzzling over the matter for awhile, it finally dawned on me that I had prevoiusly configured the Microsoft Edge browser to use a SOCKS proxy server via a Secure Shell (SSH) tunnel set up with PuTTY. I had disconnected the PuTTY connection to the SSH server, but hadn't changed the proxy server settings for the system so I realized the was likely the cause of the problem, though I hadn't expected Thunderbird to use the system proxy server setting by default.

[More Info]

[/network/email/clients/thunderbird] permanent link

Sun, Jan 08, 2017 10:50 pm

Altering the contents of a file using sed

On Unix, Linux, and OS X systems, the sed (stream editor) utility can be used to modify the contents of a file replacing one string, i.e., sequence of characters, with another. E.g., suppose the file named myfile contains the following lines:

pink blue
red Blue
blue purple blue

If I want to replace all occurrences of the word "blue" with "green", I could issue the following sed command at a Bash shell prompt.

$ sed -i -e 's/blue/green/g' myfile

[ More Info ]

[/os/unix/commands] permanent link

Sat, Jan 07, 2017 11:12 pm

Day of the week for dates in Excel and Calc

If you wish to display the day of the week, i.e, Monday, Tuesday, Wednesday, etc., that corresponds to a particular date in Microsoft Excel you can simply format the display of the date using a custom format of ddd. E.g., in Microsoft Excel 2013, if I have dates in column A displayed in mm/dd/yyyy format, but I also want the day of the week corresponding to those days to appear in column B as shown below.

Excel 2013 dates with days of the week

[ More Info ]

[/os/windows/office/excel] permanent link

Fri, Jan 06, 2017 8:44 pm

Wireshark showing RST packets when unable to access website

I was unable to access a website on a webserver I frequently access. When I examined the network traffic to and from the server with Wireshark network analyzer software, I could see a repeating sequence of SYN packets from the IP address of the Windows laptop from which I was attempting to access the web server followed immediately by RST, ACK packets from the IP address of the server. That sequence repeated over and over again. E.g.:

130	2.766497	TCP	74	44970?80 [SYN] Seq=0 Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSval=1029178963 TSecr=0 WS=16
131	2.768022	TCP	60	80?44970 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
132	2.800200	TCP	74	27779?80 [SYN] Seq=0 Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSval=1029178972 TSecr=0 WS=16
133	2.801724	TCP	60	80?27779 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0

[More Info ]

[/network/web/server] permanent link

Thu, Jan 05, 2017 4:02 pm

Email stuck in the sendmail queue

A user repoted that she didn't receive an email someone sent her today. I checked the /var/log/maillog file to see if the mail server, which is running Sendmail, received the email. When I searched on part of the sender's email address, I saw the message had been received by the mail server:

# grep sbear /var/log/maillog
Jan  5 14:08:08 moonpoint sendmail[6276]: v05IxmvR006276: from=<sbearab1@y0hoo.c
om>, size=2339942, class=0, nrcpts=1, msgid=<1226622358.574156.1483642780691@mai>, proto=ESMTP, daemon=MTA, [98.138.

So I checked Sendmail's queue with the mailq command and saw the message was stuck there. Note: Mailq is identical to sendmail -bp .

# mailq
                        /var/spool/mqueue (1 request)
-----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient-----------
v05IxmvR006276  2338155 Thu Jan  5 14:08 <>
                 (host map: lookup ( deferred)
                Total requests: 1

The sendmail queue can be flushed with the command sendmail -q -v .

#  sendmail -q -v

Running /var/spool/mqueue/v05IxmvR006276 (sequence 1 of 1)
<>... aliased to ann
ann... Connecting to local...
ann... Sent
# mailq
/var/spool/mqueue is empty
                Total requests: 0

The meaning of the -q and -v options to the sendmail command are shown below:

              Process saved messages in the queue at given intervals.  If time
              is  omitted,  process the queue once.  Time is given as a tagged
              number, with `s' being seconds, `m' being minutes (default), `h'
              being  hours, `d' being days, and `w' being weeks.  For example,
              `-q1h30m' or `-q90m' would both set  the  timeout  to  one  hour
              thirty  minutes.   By  default,  sendmail  will run in the back-
              ground.  This option can be used safely with -bd.

      -v     Go into verbose mode.  Alias expansions will be announced, etc.

[/network/email/sendmail] permanent link

Wed, Jan 04, 2017 10:32 pm

SSH brute-force break-in attempts from

While troubleshooting a problem with a Linux system this evening, I opened Wireshark and noticed a Secure Shell (SSH) packet from an unexpected source address, When I checked the fail2ban log on the system, I noticed that the IP address had been banned temporarily several times today, but break-in attempts resumed whenever the timeout period for the ban expired.

# grep '' /var/log/fail2ban.log | grep 'Ban\|Unban'
2017-01-04 17:20:46,190 fail2ban.actions        [25142]: NOTICE  [sshd] Ban
2017-01-04 17:30:47,135 fail2ban.actions        [25142]: NOTICE  [sshd] UnBan
2017-01-04 17:31:15,276 fail2ban.actions        [25142]: NOTICE  [sshd] Ban
2017-01-04 17:41:16,250 fail2ban.actions        [25142]: NOTICE  [sshd] UnBan
2017-01-04 17:41:43,390 fail2ban.actions        [25142]: NOTICE  [sshd] Ban
2017-01-04 17:51:44,299 fail2ban.actions        [25142]: NOTICE  [sshd] UnBan
2017-01-04 17:52:14,441 fail2ban.actions        [25142]: NOTICE  [sshd] Ban
2017-01-04 18:02:15,243 fail2ban.actions        [25142]: NOTICE  [sshd] UnBan
2017-01-04 18:02:43,383 fail2ban.actions        [25142]: NOTICE  [sshd] Ban
2017-01-04 18:12:44,182 fail2ban.actions        [25142]: NOTICE  [sshd] UnBan
2017-01-04 18:13:13,323 fail2ban.actions        [25142]: NOTICE  [sshd] Ban
2017-01-04 18:23:14,227 fail2ban.actions        [25142]: NOTICE  [sshd] UnBan
2017-01-04 18:24:23,414 fail2ban.actions        [25142]: NOTICE  [sshd] Ban
2017-01-04 18:34:24,183 fail2ban.actions        [25142]: NOTICE  [sshd] UnBan
2017-01-04 18:35:33,368 fail2ban.actions        [25142]: NOTICE  [sshd] Ban
2017-01-04 18:45:34,148 fail2ban.actions        [25142]: NOTICE  [sshd] UnBan
2017-01-04 18:46:44,331 fail2ban.actions        [25142]: NOTICE  [sshd] Ban
2017-01-04 18:56:45,126 fail2ban.actions        [25142]: NOTICE  [sshd] UnBan
2017-01-04 18:57:14,282 fail2ban.actions        [25142]: NOTICE  [sshd] Ban
2017-01-04 19:07:15,124 fail2ban.actions        [25142]: NOTICE  [sshd] UnBan
2017-01-04 19:07:44,270 fail2ban.actions        [25142]: NOTICE  [sshd] Ban
2017-01-04 19:17:45,043 fail2ban.actions        [25142]: NOTICE  [sshd] UnBan
2017-01-04 19:18:14,190 fail2ban.actions        [25142]: NOTICE  [sshd] Ban
2017-01-04 19:28:15,111 fail2ban.actions        [25142]: NOTICE  [sshd] UnBan
2017-01-04 19:29:23,297 fail2ban.actions        [25142]: NOTICE  [sshd] Ban
2017-01-04 19:39:23,304 fail2ban.actions        [25142]: NOTICE  [sshd] UnBan
2017-01-04 19:39:51,441 fail2ban.actions        [25142]: NOTICE  [sshd] Ban
2017-01-04 19:49:52,326 fail2ban.actions        [25142]: NOTICE  [sshd] UnBan
2017-01-04 19:50:21,472 fail2ban.actions        [25142]: NOTICE  [sshd] Ban
2017-01-04 20:00:22,251 fail2ban.actions        [25142]: NOTICE  [sshd] UnBan
2017-01-04 20:00:49,390 fail2ban.actions        [25142]: NOTICE  [sshd] Ban
2017-01-04 20:10:50,192 fail2ban.actions        [25142]: NOTICE  [sshd] UnBan
2017-01-04 20:11:19,338 fail2ban.actions        [25142]: NOTICE  [sshd] Ban
2017-01-04 20:21:20,121 fail2ban.actions        [25142]: NOTICE  [sshd] UnBan
2017-01-04 20:21:49,263 fail2ban.actions        [25142]: NOTICE  [sshd] Ban
2017-01-04 20:31:50,036 fail2ban.actions        [25142]: NOTICE  [sshd] UnBan
2017-01-04 20:33:38,258 fail2ban.actions        [25142]: NOTICE  [sshd] Ban
2017-01-04 20:43:39,059 fail2ban.actions        [25142]: NOTICE  [sshd] UnBan
2017-01-04 20:44:37,358 fail2ban.actions        [25142]: NOTICE  [sshd] Ban
2017-01-04 20:54:37,372 fail2ban.actions        [25142]: NOTICE  [sshd] UnBan

[ More Info ]

[/security/attacks/ssh] permanent link

Tue, Jan 03, 2017 10:23 pm

Executing a JavaScript function when a browser window is resized

Sometimes you may want to have a certain event take place if a visitor to your website resizes his or her browser window. With HTML 5, you can use the onresize Event Attribute. You can apply the event attribute to the body tag, e.g.:

<body onresize="someFunction()">

The event that would occur when the browser window is resized will depend upon the code you place in the JavaScript function referenced, which in this case I've named someFunction.

Note: the onresize attribute is new to HTML5 and isn't supported in HTML 4.01 and older versions oF HTML. You can expect current versions of browsers to support it, but if a visitor has an outdated browser version, the function may not work for the visistor.

[ More Info ]

[/network/web/html] permanent link

Mon, Jan 02, 2017 10:42 pm

Determining the program that is connecting to specific IP addresses

While troubleshooting a network issue using the free and open source (FOSS) network analyzer Wireshark, I noticed connections to IP addresses that I thought might be associated with adware sites. The connections were occurring from a Microsoft Windows 10 system. I suspected that the connections were occuring via a browser tab that was open to a website within the K-Meleon web browser, but I wanted to confirm that was the case and then, if it was, to attempt to identify the particular tab open in the browser and the web page that was responsible for the traffic, since there were several tabs open in the browser. There were also other browsers open on the system with multiple windows and tabs, so I might also need to check the tabs open in those browsers.

To see all of the connections to websites on the HTTP port, which is the well-known port 80, I can open a command prompt window and use the netstat command netstat -an and then pipe its output into the find command, looking for ":80". The -a option shows all connections and the -n option converts IP addresses and application layer protocols, such as HTTP, to numeric form.

[ More Info ]

[/os/windows] permanent link

Sun, Jan 01, 2017 8:45 pm

Determining if a directory exists in a Bash script

I have a Bash script that copies the prior day's mail log file from /var/log/maillog.1 to another directory for archiving. The archive directory contains a subdirectory for each year's mail logs. Today is the first day of a new year, so I needed to create a 2017 directory. I could manually create the directory, but I thought I'd modify the Bash script that runs from Cron to check on whether the current year's directory exists and, if it doesn't create it, so, if I forget in future years to create a new year's directory the script will create it for me.

You can check if a directory exists with code similar to what is shown below:

if [ -d "$DIRECTORY" ]; then
  # Insert code to be executed

Or, to check if a directory doesn't exist and execute commands if it doesn't:

if [ ! -d "$DIRECTORY" ]; then
  # Insert code to be executed

Note: putting the $DIRECTORY variable in double quotes allows for cases where the directory name may contain a space. Though that won't be the case for my yearly subdirectories, it is something you can allow for by enclosing the variable name in double quotes.

[ More Info ]

[/os/unix/bash] permanent link

Once You Know, You Newegg AliExpress by

Shop Amazon Local - Subscribe to Deals in Your Neighborhood

Valid HTML 4.01 Transitional

Privacy Policy   Contact

Blosxom logo