If you wish to check the speed of network interfaces on a
CentOS
Linux system, if the nm-tool
utility, is installed, then you can use it to determine the speed of the
network ports.
If you are logged into a CentOS Linux system, there are a few ways you can determine
the version of CentOS running on the system from a
command-line interface (CLI), i.e., a
shell
prompt.
In the /etc directory, there should be a
/etc/centos-release file containing information on the version
of CentOS.
I have an SQLite
database stored on my MacBook Pro laptop that I use to track work requests. The
database file is named CRQ.db, since it tracks work done under
a Change Request (CRQ). Within that database are several
tables
two of which are "Equipment" and "Device". For every CRQ that I need to
deal with, I store records with the CRQ number in a "CRQ"
column and an identifier for each piece of equipment affected by work done
under that CRQ in a "Device" column. information on equipment that is affected
by the CRQ in the Equipment table. I have another table named "Device" that
holds details for each device, including the manufacturer and model number as
well as the physical location of the device. The information in the
"Description" column in the "Device" table matches the "Device" name in
the "Equipment" table. The two tables have the following structure:
Someone reported to me that when she attempted to connect to the WiFi service
at her office that she received the message below on her phone:
Weak Security
WEP is not considered secure.
If this is your Wi-Fi network, configure the router to use WPA2 Personal
(AES) security type.
When I checked the Verizon-provided router providing the wireless service
at her office, I found it was an ActionTec MI424WR-GEN2 router. To change
the wireless security on that router from
WEP to
WPA2 take
the following steps.
Log into the router and, from the main menu, click on Wireless Settings.
Click on Advanced Security Settings.
From the Advanced Security Settings menu, select WPA2
(An enhanced version of WPA providing stronger security settings.
At the WPA2 window, type a key, which is akin to a password, in the
Pre-Shared Key field and click on the Apply button.
When you click on Wireles Settings again from the top menu bar,
you should then see the key you provided in the WPA2 line.
Someone sent me a Microsoft PowerPoint presentation to review. The file
I received was a .pptx file which I opened using the PowerPoint application
in Microsoft Office 2016 for Mac on my
MacBook Pro
laptop running
OS X El Capitan (10.11.6). When I viewed the presentation, I noticed one
of the slides was blank. I sometimes receive Microsoft Excel workbooks which
contain a worksheet that should normally contain network diagrams where the
diagrams don't appear when viewed on my Mac laptop, but do appear when I open
the file in Microsoft Excel on a system running the Microsoft Windows operating
system. In such cases, I've found that since the .xlsx or .xlsm
file
format is just an XML-based container format akin to a
zip file, I
rename the files where the problem occurs to have a .zip rather
than .xlsx or .xlsm extension, which then allows me to extract the
files contained within the file - see
Zipping and unzipping Excel
xlsx files and Extracting
embedded documents from an Excel .xlsm file. Then I use the OS X
file command
in a
Terminal window to examine the .bin files in the xl/embeddings
subdirectory that is produced when I extract the files and folders
from the zip file. That utility tells me which of the .bin files
represent embedded Microsoft Visio or PowerPoint files, so I can then give
the Visio ones a .vsd extension rather than a .bin extension. I can
then view the diagrams with the free
VSD Viewer Pro application
I have on the Mac. Since there are usually several .bin files in the directory,
I created a Python script
to determine the file type for all of the files in a directory at once.
To remove all lines containing a particular
string in the vi or
Vim
text editors, you can use the g command to globally search for the
specified string and then, by putting a "d" at the end of the command line,
specify that you want all lines containing the specified string deleted. E.g.,
If I wanted to remove all lines containing the string "dog", I could use the
following command.
:g/dog/d
That command would also remove any lines containing "dogs", "dogged", etc.
If I just wanted to remove lines containing "dog", I could use
:g/dog /d.
You can, of course, specify the pattern on which you wish to search using
regular expressions. E.g., if I wanted to remove any lines containing
either "dog" or "hog", I could use the command below.
g/[dh]og/d
By putting the leters "d" and "h" within
brackets, I indicate to vi that it should remove any
line that has either a "d" or an "h" followed by "og".
If you have a lot of records in a
table
in a
MySQL,
MariaDB, etc. database that
are returned when you use the
SQLSELECT
command to query for matching records, the results may scroll by so that you
can't see the initially returned rows. You can limit the number of rows
displayed by appending LIMIT n at the end of the command where
n is the number of records you want to see at a time.
E.g., if I had 100 records in a table named Sales, but wanted to page
through them 10 records at a time, I could use SELECT * FROM Sales LIMIT
10; or, if I just wanted to view one
field/column
in the table, e.g. "Description", I could use SELECT Description FROM
Sales LIMIT 10;
I noticed the time on a Microsoft Windows 7 Professional system was ahead of
the actual time by 22 minutes. The system was part of a
Windows domain,
but the domain controller (DC) was decommissioned. I checked
the Network Time Protocol (NTP) settings from a
command-line interface (CLI) by opening a
command prompt window with
administrator level access and using the Microsoft Windows
w32tm command.
to check the current configuration for querying time servers.
Click on the Windows
Start button at the lower, left-hand corner of the screen, or tap the
Windows key on the keyboard
and select Control Panel.
From the Control Panel, click on Network and Internet
Click on Network and Sharing Center.
Click on Set up a new connection or network.
Click on Connect to a workplace at the "Choose a connection option"
window.
At the Connect to a Workplace window, click on Use my Internet
connection (VPN).
At the next window you will see "Type the Internet address to connect to".
Type the fully qualified domain name (FQDN) or IP address for the VPN
provider, e.g., example.com, in the Internet address field. The default
destination name is "VPN Connection," but you can change it if you wish
to reflect the particular VPN provider, e.g., "Ajax VPN Connection". Check
the check box next to "Don't connect now; just set it up so I can connect
later" and then click on the Next button.
Note: if you don't have a VPN service already,
Hide.me offers a free VPN service you can use for testing, though it has
more limited features and geographical locations than the Hide.me paid service.
At the next window, you can provide the user name and password for the
VPN account. If you don't want to have to provide those each time you
establish the VPN connection, check the check box next to "Remember this
password" then click on Create.
When you see "The connection is ready to use," click on the Close
button rather than Connect now.
Then back at the Network and Sharing Center window, you can click on
Connect to a Network and select the VPN connection.
Or you can click on Change adapter settings which will show you
the available network connections. You will need to be already connected to
the Internet via a wired or wireless connection to establish a connection to
the VPN. You can then double-click on the VPN connection entry in the
list. You should see "WAN Miniport (IKEv2)" on that entry.
If you need to make any changes to the settings, you can right-click on the
relevant VPN connection and choose Properties.
A window will open with fields for the user name and password for the domain.
If you chose to save those values previously, you can simply click on
Connect at this point to establish the VPN connection.
To remove
cookies for a specific site in
Google
Chrome version 62, take the following steps:
Put chrome://settings/siteData in the Chrome address bar
where you normally place URLs which will show you a list of all the cookies stored
on the system.
In the "Search cookies" field, type the relevant domain name, e.g.,
mattel.com; you will then see only the cookies for that particular domain.
Click on "REMOVE ALL SHOWN" to remove all of the cookies for the domain. You
will then be warned "This will delete any data stored on your device for all
the sites shown. Do you want to continue?" Click on the "CLEAR ALL" button
to delete all of the cookies for the domain.
You can also go directly to the list of all the cookies associated with
a particular domain by putting chrome://settings/cookies/detail?site=
followed by the domain name in the address bar, e.g.,
chrome://settings/cookies/detail?site=mattel.com.
You can then click on "REMOVE ALL" to delete all of the listed cookies for
the domain.
Note:
Tested with Google Chrome Version 62.0.3202.89 (Official Build) (32-bit)
on a system running Microsoft Windows 7 Professional.
I received an email message from someone that contained an attachment that
had a .eml filename extension. When I viewed that file, I found the
usual email header fields, i.e., "from", "to", "cc",
and "subject", but for the body of the message I saw the following:
I needed to decode the base64 encoded text. Fortunately,
Python has a
base64 module that
can be used for that purpose. So I created the following Python script to
decode the encoded portion of the .eml file. The script expects the name of
the input file to be provided on the command line and will print an error
message and terminate if the file name isn't provided. If the filename is
provided, the script will read the file line by line looking for the
"Content-Transfer-Encoding: base64" which indicates that after one following
blank line the encoded text will commence. The output will be displayed on
the screen but can be
redirected to a file.
#!/usr/bin/python
import base64, sys
try:
sys.argv[1]
except IndexError:
print "Error - missing input file name! Usage", sys.argv[0], "infile"
sys.exit(1)
else:
fileName = sys.argv[1]
base64_marker = "Content-Transfer-Encoding: base64"
block_of_lines = ""
with open(fileName) as input_data:
# Skips text before the beginning of the base64 encoded block:
for line in input_data:
if line.strip() == 'Content-Transfer-Encoding: base64':
break
for line in input_data: # Skip blank line
break
# Reads text until the end of the block:
for line in input_data: # Append lines to block_of_lines
block_of_lines = block_of_lines + line
print base64.b64decode(block_of_lines)
You can use wmic os get commands on a Microsoft Windows system
to view information related to the operating system via a command-line
interface (CLI). E.g., to determine the version of the operating system you
can issue the command
Windows Management Instrumentation Command-line (WMIC)
command wmic os get version.
C:\Users\Public>wmic os get version
Version
10.0.15063
C:\Users\Public>
Or if you know the system is running a particular version of the Windows
operating system, e.g., Windows 10, but want to see just the build number
for that version of Windows, you could issue the command wmic os get
BuildNumber.
C:\Users\Public>wmic os get BuildNumber
BuildNumber
15063
C:\Users\Public>
To view the list of documents contained in a
PDF document with Adobe Acrobat Reader DC on a
Mac OS X
system, with the file open in Acrobat Reader DC, click on File then
select Properties and then click on the Fonts tab.
A user reported that when she printed
Microsoft Excel spreadsheets or
QuickBooks
invoices, no text would appear on the printouts. She had reported the
same problem about a month ago. When I rebooted the system then, the problem
went away, but this time rebooting didn't help. After I requested that
she reboot the system, I was told the problem remained, so when I was
able to get to the system to troubleshoot, I first checked to make sure
the system had been rebooted rather than QuickBooks simply being restarted.
It was then that I noticed a lot of other functionality was no longer
available. E.g., when I tried to
use the systeminfo command to find the last reboot time, I saw an error
message instead of the time the system was last rebooted.
Microsoft Windows [Version 10.0.15063]
(c) 2017 Microsoft Corporation. All rights reserved.
C:\Users\Pam>systeminfo | find /i "Boot"
Loading Operating System Information ...ERROR: Invalid class
C:\Users\Pam>systeminfo
Loading Operating System Information ...ERROR: Invalid class
C:\Users\Pam>wmic os get lastbootuptime
os - Alias not found.
C:\Users\Pam>
You can determine the version of Microsoft Windows installed on a system
from a
PowerShell prompt using [System.Environment]::OSVersion.Version
or (Get-WmiObject -class Win32_OperatingSystem).Caption.
PS C:\Users\Public> [System.Environment]::OSVersion.Version
Major Minor Build Revision
----- ----- ----- --------
10 0 15063 0
PS C:\Users\Public> (Get-WmiObject-class Win32_OperatingSystem).Caption
Microsoft Windows 10 Pro
PS C:\Users\Public> (Get-WmiObject-class Win32_OperatingSystem)
SystemDirectory : C:\WINDOWS\system32
Organization : Microsoft
BuildNumber : 15063
RegisteredUser : Jeanne
SerialNumber : 00330-80000-00000-AA775
Version : 10.0.15063
PS C:\Users\Public>
You can use the PowerShellGet-Disk cmdlet to query disk drives
within or attached to a PC running the
Microsoft Windows operating system. E.g.:
PS C:\Users\Public> Get-Disk
Number Friendly Name Serial Number HealthStatus OperationalStatus Total Size Partition
Style
------ ------------- ------------- ------------ ----------------- ---------- ----------
0 ST3320418AS 9VMNNJDN Healthy Online 298.09 GB MBR
4 Generic- C... 058F63626421 Healthy No Media 0 B RAW
6 Generic- M... 058F63626423 Healthy No Media 0 B RAW
3 Generic- S... 058F63626420 Healthy No Media 0 B RAW
5 Generic- S... 058F63626422 Healthy No Media 0 B RAW
1 Lexar USB ... AA58ZF9FJCCALAOA Healthy Online 14.92 GB MBR
2 WD My Pass... WXP1A27034VH Healthy Online 931.48 GB GPT
PS C:\Users\Public>
I wrote a Python script that will download a webpage, extract a portion
of the text displayed on the page and write the extracted portion to an
SQLite
database. When I ran the script, I saw the message below displayed:
You must not use 8-bit bytestrings unless you use a text_factory that
can interpret 8-bit bytestrings (like text_factory = str). It is highly
recommended that you instead just switch your application to Unicode
strings.
I had created the following function to establish the connection to the
SQLITE 3 database:
def create_connection (db_file):
""" Create a database connection to an SQL database
Return connection object or none """
try:
conn = sqlite3.connect(db_file)
return conn
except Exception as e:
print(e)
return None
If you want to determine how long a Microsoft system has been running since
it was last rebooted from a command-line interface (CLI), you can do so using
PowerShell. You can do so by subtracting the last boot time from the current
date and time. The Get-Date cmdlet shows the current date and time
and (Get-CimInstance Win32_OperatingSystem).LastBootUpTime shows
the last time the system was booted.
After I rebooted a Windows 10 PC subsequent to a software update on the system,
when I attempted to reopen
Microsoft Outlook 2016, I saw the message below:
Outlook Data File
The file C:\Users\jasmith1\AppData\Local\Microsoft\Outlook\john.a.smith@exmple.com.ost is in use and cannot be accessed. Close any
application that is using this file, and then try again. You might need to restart your computer.
If you are accustomed to using the wget or cURL utilities on
Linux or
Mac OS X
to download webpages from a
command-line interface (CLI), there is a
Gnu
utility,
Wget for Windows
, that you can download and use on systems running Microsoft
Windows. Alternatively, you can use the Invoke-WebRequest
cmdlet from a PowerShell prompt, if you have version 3.0 or greater of
PowerShell on the system. You can determine the version of PowerShell on
a system by opening a PowerShell window and typing $psversiontable.
E.g., in the example below from a Windows 10 system, the version of PowerShell
is 5.1.15063.674.
If you have version 3.0 or later, you can use wget or
curl as an alias for the Invoke-WebRequest cmdlet,
at least up through version 5.x. E.g., if I want to download the home
page for the website example.com to a file named index.html, I could use
the command wget -OutFile index.html http://example.com
at a PowerShell prompt. Or I could use either of the following commands,
instead:
You can check version information for a
Dynamic-link
Library (DLL) file, i.e., a file with a .dll
filename extension, or a
executable file, i.e., a .exe file, from a command-line interface (CLI)
on a Microsoft Windows system by using the Get-Item cmdlet. E.g.:
If you can't see all of the information, i.e., if you see three
dots indicating that not all of the information is displayed, you can
append | format-list to the command to have the output displayed
in list format.
If you need to calculate a checksum, aka
cryptographic hash value or digital fingerprint, on a
Mac OS X
system, you can use the md5
command to calculate a MD5 checksum, which is equivalent to the
md5sum utility on Linux
systems, and the shasum
command to calculate Secure Hash Algorithms (SHA). The default value for
shasum, if no
algorithm is specified, is Secure Hash Algorithm 1 (SHA-1), but you can specify other
algorithms, such as
Secure Hash
Algorithm 2 (SHA-2), e.g. SHA-256, using the -a option. E.g.
-a 256 for SHA-256.
I sometimes need to determine the day of the year corresponding to today's
date. The day of year starts with January 1 as day 1 and for 2017, December
31 is day 365. You can find sites online that will provide those values,
e.g. Day Numbers for 2017
or
NOAA's
DOY
Calendar. Or, on a system with
Python installed, e.g.,
Linux or
OS X, you
can use the
datetime module to obtain the day of the year corresponding to the
current date as shown below:
$ python
Python 2.7.10 (default, Oct 23 2015, 19:19:21)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> datetime.datetime.today().timetuple().tm_yday
280
>>> exit()
$
Since today is October 7 of the year 2017, the day of the year is 280.
If you want to obtain the day of year (DOY) for another date, you can use
datetime.date(year, month, day).timetuple().tm_yday
where year is the relevant year, month is the month,
and day is the day of interest. E.g., March 1, 2017 is DOY 60:
If you want to determine the IP address of the
DHCP server
from which a Mac
OS X system received its IP address,
subnet
mask, etc., you can obtain that information from a
command-line interface (CLI), i.e., a
Terminal window by using the command ipconfig getpacket
interface where interface is the relevant network
interface, which will usually be en0 or en1.
You can issue the command ifconfig -a in a Terminal
window to see the network interfaces on the system and which have
IP addresses assigned to them.
getpacket interface-name
Prints to standard output the DHCP/BOOTP packet that the
client accepted from the DHCP/BOOTP server. This command is
useful to check what the server provided, and whether the
values are sensible. This command outputs nothing if
DHCP/BOOTP is not active on the interface, or the attempt to
acquire an IP address was unsuccessful.
I wanted to determine how many connections I was receiving per day from
GmailSimple Mail Transfer Protocol (SMTP) servers to my email
server running
Sendmail on a CentOS Linux system and the IP addresses of the Gmail
servers that were sending email to users on my server. So I created a simple
Python script to search for lines in the maillog file,
/var/log/maillog for any lines containing "relay" and
"google.com" on the same line, since the Gmail servers are in
Google's domain.
I received a zip file containing data captured with
tcpdump on
a Linux system. When I tried to open the zip file on my
MacBook Pro
laptop running OS X El Capitan by double-clicking on the file within the
Finder,
I saw an "unable to expand" error message stating "Error 2 - No such file or
directory." A Microsoft Windows user who downloaded the same zip file reported
that he was unable to open it, either. When I tried to unzip the file from
a
Terminal window using the
unzip utility, I saw an "End-of-central directory signature not found" error
message.
$ file AS2_Captures.zip
AS2_Captures.zip: Zip archive data, at least v2.0 to extract
$ unzip AS2_Captures.zip
Archive: AS2_Captures.zip
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip: cannot find zipfile directory in one of AS2_Captures.zip or
AS2_Captures.zip.zip, and cannot find AS2_Captures.zip.ZIP, period.
$
Chromium is a
free and open-source (FOSS) web browser that is very
similar to the Google Chrome browser, though with
some differences. Google started the Chromium project as a means to
provide the source code for the proprietary Google Chrome browser. The
Chromium Project is headed by Google developers with input from community
developers.
If you wish to use the Chromium browser on a
CentOS
Linux system, you can install it by running the command
yum install chromium from the root account. You can check if
it is already installed on a CentOS system with rpm -qi chromium.
$ rpm -qi chromium
Name : chromium
Version : 60.0.3112.113
Release : 2.el7
Architecture: x86_64
Install Date: Tue 26 Sep 2017 10:35:46 AM EDT
Group : Unspecified
Size : 106438445
License : BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2)
Signature : RSA/SHA256, Tue 29 Aug 2017 08:00:23 AM EDT, Key ID 6a2faea2352c64e5
Source RPM : chromium-60.0.3112.113-2.el7.src.rpm
Build Date : Mon 28 Aug 2017 08:21:06 PM EDT
Build Host : buildvm-22.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager : Fedora Project
Vendor : Fedora Project
URL : http://www.chromium.org/Home
Summary : A WebKit (Blink) powered web browser
Description :
Chromium is an open-source web browser, powered by WebKit (Blink).
$
While checking the mail log file, /var/log/maillog, on an email
server today, I noticed an attempted login from an IP address in an address
range I didn't recognize. The entry in the log file contained the following
text:
dovecot: pop3-login: Disconnected (tried to use disallowed plaintext auth):
user=<>, rip=94.136.51.56
I checked the country associated with the 94.136.51.56 IP address
(ds7247.dedicated.turbodns.co.uk) with geoiplookup (you can install
the GeoIP package on a CentOS Linux system with yum install
GeoIP) and found it was an address assigned to an entity in
Great Britain.
$ geoiplookup 94.136.51.56
GeoIP Country Edition: GB, United Kingdom
$
If you see an error message like the one below, which was produced by Microsoft
Excel for Mac 2016 on a Mac OS X system, even though you don't have the file
open currently, then you will need to delete the lock file, which
should be in the same directory as the spreadsheet.
This file is locked for editing.
Locked by: John Doe
Filename: SGRS_2017.xlsm
You can open the file as read-only.
The lock file will have the same name as the workbook you were trying
to open, but the file name will have ~$ prepended to it. To
delete the file you will need to "escape" the meaning of the dollar sign
by putting an escape character, i.e., a backslash character, immediately
before the dollar sign. I.e., use ~\$ as shown below:
$ ls -alg **SGRS_2017.xlsm
-rw-rw-r--@ 1 ABC\Domain Users 761327 Sep 13 15:57 SGRS_2017.xlsm
-rw-rw-r--@ 1 ABC\Domain Users 171 Sep 18 22:46 ~$SGRS_2017.xlsm
$ rm ~$SGRS_2017.xlsm
rm: ~.xlsm: No such file or directory
$ rm ~\$SGRS_2017.xlsm
$
Once the lock file has been deleted, you should be able to open the
file without the warning message that it is locked for editing.
You can obtain the version of the
Microsoft Edge browser on a Windows system using the
Get-AppXPackage cmdlet with
Get-AppXPackage -Name Microsoft.MicrosoftEdge.
A user reported her Windows 10 Professional system was running slowly. On
September 14, 2017, I checked the system with
SUPERAntispyware, which reported
that it found the Ask Toolbar. It reported the following items associated with
the toolbar:
If you have a list in a
Python script and wish to add new items to the list, you can
use listname.append(newitem) where listname is
the name of the list and newitem is the item you wish to add to the list.
If you wish to add new items to the list only if they don't already
exist in the list, you can avoid adding an existing entry to the list
by checking if the entry is already in the list as shown below:
filenameList = []
if filename not in filenameList:
filenameList.append(filename)
If you wish to know the length of a list, i.e., how many items are
on the list, you can use print len(listname) where
listname is the name of your list.
You can backup a
table in a MySQL or MariaDB database by using the
mysqldump backup tool included with both database
management systems. To backup a specific table you can use the command
mysqldump database_nametable_name where
database_name is the name of the database that contains the table and
table_name is the name of the particular table you wish to backup. E.g.:
mysqldump -u ptolemy -p Planets Mars > Mars.sql
In the above case, if I have a database named Planets with
a table within it named Mars, I could backup just that one table
from the database with the command above. The -u option to the
command allows you to specify a MySQL/MariaDB username that has access to
the database and the -p option will prompt you for the password
associated with that username. The Mars.sql file will then
contain all of the
Structured Query
Language (SQL) commands needed to recreate the table structure and the
data in the table. E.g., it will contain insert SQL commands that will insert entries in the table.
I have a Python script,
filetype.py, that takes a file name as a parameter. I use the script
to identify if a file with a .bin extension is actually a
Microsoft Visio or
PowerPoint file. I run the script on an
OS X system
from a Terminal
window where I have a Bash shell prompt. E.g.:
$ ~/Documents/bin/filetype.py oleObject1.bin
Microsoft Office PowerPoint
$
But I often want to have it check all of the .bin files in a directory. You
can loop through all files in a directory or a set of files using a Bash
for loop.
E.g., to check all of the .bin files in a directory I could use the
for-loop below:
$ ls *
oleObject1.bin oleObject3.bin oleObject5.bin
oleObject2.bin oleObject4.bin oleObject6.bin
$ for f in *.bin; do ~/Documents/bin/filetype.py $f; done
Microsoft Office PowerPoint
Microsoft Office PowerPoint
Microsoft Office PowerPoint
Microsoft Visio
Microsoft Visio
oleObject6.bin: CDF V2 Document, No summary info
$
Someone who uses
GoDaddy for her email reported to me today that she couldn't
send email. I logged into her account from another system and was able to
send email to myself. When I notified her that I had been able to send email
from her acount to myself, she sent an email to me, but reported it was
still stating "loading" when she hit the send button. So tonight I logged into
her system and opened the Firefox browser, since she uses that browser to
send and receive email. When I clicked on Compose, I saw a "Loading..."
message in the body of the email that wouldn't go away unless I clicked on
the Plain Text tab to switch from "Rich Text", which allows one to
format text in the message with bolding, font colors, etc., to "Plain Text".
But when I switched back to "Rich Text", I had problems typing my email
address in the "To" field with only one letter appearing in the "To" field
no matter how many letters I typed.
If you need to know information about the manufacturer and model number of
a monitor on a Microsoft Windows system, you may be able to obtain it from
a PowerShell
prompt using the Get-WmiObject cmdlet as shown
below:
PS C:\> Get-WmiObject win32_desktopmonitor
DeviceID : DesktopMonitor1
DisplayType :
MonitorManufacturer : HP
Name : HP S2031 Series Wide LCD Monitor
ScreenHeight :
ScreenWidth :
PS C:\>
I manage a Linux server that functions as an email server using the
free and open source software (FOSS) package
sendmail.
I provide a mechanism through the server for someone who has
Verizon as his
Internet Service Provider (ISP) to send monthly newsletters
by email to an organization that has about thirteen hundred members on its
email distribution list, since he can't send to that number of people through
his ISP-provided email service. I do so by providing an
email alias
on my server, e.g., thelist@example.com that he puts in the
BCC line of his email. The alias is stored in /etc/aliases
and points to a text file containing the list of all members' email addresses.
So his ISP-provided
SMTP server sees only the one address, thelist@example.com,
which results in an email message to the server I manage that then translates
that address into the approximately 1,300 email addresses of members and sends
the newsletter to all members.
But this month the user reported he had sent the
message, but it had not been delivered to recipients. I first checked the
server's mail log, /var/log/maillog, for any occurrences of his
email address for the day he reported the problem. I use several free
DNS-based
Blackhole List (DNSBL) services to reduce the amount of
spam that
reaches user's inboxes, so I suspected that one of those services had blocked
email from the SMTP server through which he was sending his message, even
though I had whitelisted his email address quite some time ago by
adding a line like the following one to /etc/mail/access and
then running the command makemap hash /etc/mail/access
</etc/mail/access.
slartibartfast123987@verizon.net OK
I didn't find any references to his email address in the /var/log/mail
file, so I asked him to resend the message. I still didn't see any
references to his email address in the /var/log/maillog file,
but I did see that SORBS had blocked email from an
America Online (AOL)
server at the time he sent the message.
I wanted a simple easy to use application for managing my todo list that was
free and open source software (FOSS) which I could install
on Linux systems, but which might also be available for other operating systems
as well. There are online, commercial alternatives, but I wanted something
I could put on my own systems with no fear that my data might disappear should
a commercial entity not remain commercially viable. I found
Taskwarrior, an
open-source, cross platform time and task management tool with a
command-line interface (CLI). The command line interface is helpful to
me since I'm often working on systems via a Secure Shell (SSH) connection
and would like to be able to add to my task list on those systems without
using a graphical user
interface (GUI).
If you want to know what options you have for printing files on a Microsoft
Windows system, e.g., perhaps you want a list of currently avaialble printers
or even want to know the IP addresses by which some printers are accessible,
the
PowerShell Get-Printer cmdlet may provide the information you are seeking.
E.g.:
PS C:\Users\Pam> Get-Printer
Name ComputerName Type DriverName PortName Shared Published
---- ------------ ---- ---------- -------- ------ ---------
Microsoft XPS Document Writ... Local Remote Desktop Easy Print TS002 False False
Send To OneNote 2013 (redir... Local Remote Desktop Easy Print TS003 False False
Quicken PDF Printer (redire... Local Remote Desktop Easy Print TS001 False False
Send To OneNote 2010 Local Send To Microsoft OneN... nul: False False
Ricoh Aficio MP C2500 PCL5c Local Ricoh Aficio MP C2500 ... 192.168.0.90 True False
Microsoft XPS Document Writer Local Microsoft XPS Document... PORTPROMPT: False False
Microsoft Print to PDF Local Microsoft Print To PDF PORTPROMPT: False False
HP Deskjet 6940 series Local HP Deskjet 6940 series 192.168.0.9 True False
Fax Local Microsoft Shared Fax D... SHRFAX: False False
Adobe PDF Local Adobe PDF Converter Documents\*.pdf False False
ABS PDF Driver v400 Local Amyuni Document Conver... LPT1: False False
PS C:\Users\Pam>
You can use the date and
time commands on a Microsoft Windows system to
display current date and time information:
C:\Users\Lila>date /t
Sat 08/26/2017
C:\Users\Lila>time /t
02:07 PM
C:\Users\Lila>
Placing /t after the commands results in the current date
and time information being displayed without an accompanying prompt to change
the current settings.
On a CentOS
Linux system, I have a
MariaDB
(MariaDB is a
fork of MySQL) database named "Books" that contains a
table
named "Amazon" where I've stored information on books that includes their
Amazon Standard Identification Number (ASIN). I want to be
able to run a
Python script to which I provide a word as a command line
argument and have the script find all books in that
database table that have a title containing that word and to print the
title, which is stored in a
column
named "Description" along with the ASIN, which is stored in a column named
"ASIN". To do so, I use a script with the following code:
The
free and open sourcepacket analysis
tool Wireshark provides
many capabilities for analyzing network traffic. Among its capabilities is
the capability to provide statistical information regarding captured network
traffic. Looking at a pcap
file with Wireshark for traffic captured during a data flow test, I saw what
seemed to be a fair amount of
Simple Network Management Protocol (SNMP) and
Secure Shell (SSH)
traffic with systems on an external network. I wanted to determine the
actual percentage that traffic represented within the overall traffic during
the test period. Fortunately, that is easy to do within Wireshark. One way to
view statistics on bandwidth utilization by protocol while viewing
captured data is by clicking on Statistics then selecting Protocol
Hierarchy. Note: you may need to wait a little while for the statistics
to be displayed if the amount of data to be processed is large.
When you start the Firefox
web browser, it will attempt to determine if the network connection available
to it when it starts is via a
captive portal.
If you use a hotel's Wi-Fi service, a free WiFi service provided by a
restaurant or other business, or some other public WiFi service, when you first
open your browser you may see a web page asking you to accede to terms of
service, an
acceptable use policy, or to provide some authentication
information, e.g., perhaps your name and room number for a hotel,
or to provide payment information if you are accessing a wireless
service that is not free. You won't be able to go elsewhere on the
web, at least not easily, until you deal with the demands/conditions
specified on the captive portal page.
I needed a way to determine a file's type within a
Python
script when I can't rely on the file's extension to determine the
file format. I'll be
running the script on a MacBook Pro laptop running the
OS X El Capitan
operating system.
OS X/macOS, like
Linux, comes with the
file command, so
I could run that command at a
shell prompt to
have the utility check the
magic number in the files I'm interested in, but I want to do some
additional processing of the files within the Python script, so I want to
perform the format check within Python. Python provides the
subprocess
module that provides the capability to "spawn new processes, connect
to their input/output/error pipes, and obtain their return codes." So I can
call the file utility from
within Python using that module. To get the results from running a shell
command, you use suprocess.Popen(). You can then set a
variable
to hold the results of
.communicate() and print the contents of that variable as shown below.
The script expects the name of the file to be checked to be provided as
an
argument on the command line.
Sometimes I encounter difficulties signing out of an account on Amazon's
website when I need to sign into another account, if the resolution of the
display isn't great enough to allow me to see the bottom of Amazon's list of
choices where the sign out option appears.
If I need to logon on such a system, there's no problem. If I visit
Amazon's home page, I can click on "Hello. Sign in Accounts & Lists" where
I see a "Sign in" button.
I need to download and view Excel workbooks,
Portable
Document Format (PDF), and sometimes other types of documents related
to work requests from a website. When I view a webpage for a particular work
request, some of the documents may have been posted weeks or months ago while
some are more recent, but when I download them they all get the
timestamp of the time
I downloaded them, but I would like to change the timestamps to match the
timestamps on the website. On the webpage for a particular work request,
I see the following information for files:
After a power outage, I found I was unable to connect to a Microsoft Windows
10 system from a Windows Server 2012 system on the local area network (LAN)
using the
Remote Desktop Protocol (RDP). When I tried to connect, I saw the
message "Remote Desktop can't connect to the remote computer for one of these
reasons..."
I knew the system had rebooted after the power outage, because I could
ping it and see its shared folders using the command net view
systemName where systemName is the system's name.
I need to track work requests that are associated with particular projects.
The work requests are submitted through a website, but I want to be able
to run queries on the data that aren't available to me from the website. So
I decided to add a projects
table to
an existing SQLite
database I have on my MacBook Pro laptop. I didn't want to manually
enter a list of about 200 projects into the table, however, so I
copied the projects list from the website into a text file. The
webpage that lists all of the projects includes projects that are
no longer valid and I want to include those in my database table,
but note that they are longer valid. When I copy the data from the
web page, I have lines like the following ones:
You can obtain information on the
motherboard in a
computer running Microsoft Windows using
PowerShell by means of
the Get-Ciminstance cmdlet with the command
Get-Ciminstance Win32_Baseboard. E.g., the following example is
from a Microsoft Windows 10 system.
PS C:\> get-ciminstance win32_baseboard
Manufacturer : Gigabyte Technology Co., Ltd.
Model :
Name : Base Board
SerialNumber :
SKU :
Product : GA-78LMT-S2P
PS C:\>
The manufacturer, model number, serial number,
SKU, and
product number will be displayed if that information can be queried from
the motherboard. Note: not all parameters will be available for every
motherboard as shown above. For another system, the serial number is
available.
PS C:\> get-ciminstance win32_baseboard
Manufacturer : Dell Inc.
Model :
Name : Base Board
SerialNumber : .7XCTZ12.CN7016346F0331.
SKU :
Product : 088DT1
PS C:\>
You can restrict the displayed information to particular parameters by
piping the
output to select-object. E.g.:
My wife uses Comic Life 3 from Plasq. On
a couple of occasions recently, when she was using the program on one Microsoft
Windows 10 system while editing a Comic Life file stored on another Windows
10 system, when she tried to save the file over the local area network (LAN)
to the other system, she saw "Finalizing Save. Please Wait." but the save
operation didn't complete.
After a long period of time had gone by, I finally rebooted the system
on which Comic Life was running, since I couldn't kill it with the
Windows Task
Manager. Fortunately, all of her work was not lost, however. When I
checked the system on which the Comic Life file was stored, I saw a file
with a comiclife.latest extension in addition to the one with the
.comiclife extension Comic Life uses for files.
C:\> dir "C:\Users\Public\2017\08\2017-08-18\*comiclife*"
Volume in drive C has no label.
Volume Serial Number is 5C60-1B61
Directory of C:\Users\Public\2017\08\2017-08-18
08/15/2017 12:34 PM 40,099,848 Week33.comiclife
08/15/2017 12:51 PM 48,691,208 Week33.comiclife.latest
2 File(s) 88,791,056 bytes
0 Dir(s) 2,766,325,518,336 bytes free
C:\>
I moved the file with the .comiclife extension to another directory and
renamed the Week33.comiclife.latest file to Week33.comiclife - I received
the normal warning Windows displays when changing a
filename
extension, but proceeded.
I was then able to open the renamed file in Comic Life and recover the
latest changes she had made to the file. This is the second time I've
had to go through this process to recover her work in Comic Life due to
Comic Life not completing the "finalizing save" step, but the incidences
may have been due to a network issue.
Mutt
is a text-based
email client for Linux and
Unix-like systems. If you want to save a particular message to a file in
mutt, you can select the message then hit the v (the
lowercase letter) key. In mutt, the letter is used for "view-attachments",
but you can also use it to save the body of an email message to
a file. If you hit the s key with the message selected
or while viewing the message, you will see "<no description>" next to
the number 1. If the email has any attachments they will be numbered from 2
upwards. With the first entry, i.e. the one labeled "<no description>"
selected, if you hit the letter s (lowercase letter),
you will see "Save to file:"
Type the file name you wish the message to be saved under after "Save to
file:" After saving the file, you can hit q several times
to get back to the shell prompt. The message will be in the current
directory. The file will only contain the contents of the message, not
the message header, i.e., you won't see from, to, and subject lines.
I opened
HTTPNetworkSniffer, a packet capture tool developed by Nir Sofer and
available from his NorSoft site, today on
a Microsoft Windows system. While it was open I visited this website using
the Firefox browser on the system and happened to switch back to the
HTTPNetworkSniffer window where I noticed an unexpected connection to
gn.symcd.com.
The System File Checker (SFC) tool (sfc.exe) will check the operating system
for missing or corrupted files. To use the tool on a Windows Vista system,
take the following steps:
Obtain a command
prompt by clicking on the Windows logo button normally at the
lower left-hand corner of the screen, then select Programs,
Accessories, right-click on Command Prompt and choose
"Run as administrator". When prompted for permission to continue, click
on the Continue button.
At the command prompt, type the command sfc /scannow and hit
Enter.
At the conclusion of the scanning process, you will be informed
whether any problems were detected.
C:\Windows\system32>sfc/scannow
Beginning system scan. This process will take some time.
Beginning verification phase of system scan.
Verification 100% complete.
Windows Resource Protection did not find any integrity violations.
C:\Windows\system32>
If there were problems that could not be repaired,
you can find information on them by checking the log file
produced by the System File Checker tool. The log
file is %windir%\Logs\CBS\CBS.log. On most systems,
%windir% will be C:\Windows. Typing echo
%windir% at a command prompt will show you the directory for
the variable. You can open the file in Notepad by typing the command
notepad %windir%\Logs\CBS\CBS.log at the command prompt
you got by following the steps above.
Or you can use the following steps To determine which files could
not be repaired by the System File Checker tool:
Obtain a command prompt with administrator privileges as
above by right-clicking on Command Prompt, which is found under
Programs then Accessories, and choosing
"Run as administrator."
Then type the command findstr /c:"[SR]"
%windir%\Logs\CBS\CBS.log >%userprofile%\Desktop\sfcdetails.txt
and hit Enter. That will extract relevant entries from the
CBS.log file and place them in the file
sfcdetails.txt on the Desktop of the user account you are using
when you run the command.
Microsoft Windows [Version 6.0.6002]
Copyright (c) 2006 Microsoft Corporation. All rights reserved.
C:\Windows\system32>
Microsoft Windows [Version 6.0.6002]
Copyright (c) 2006 Microsoft Corporation. All rights reserved.
C:\Windows\system32>findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log >%userprofile%\D
esktop\sfcdetails.txt
Note The Sfcdetails.txt file contains details from every time that the
System File Checker tool has been run on the computer. The file
includes information about files that were not repaired by the System
File Checker tool. Verify the date and time entries to determine the
problem files that were found the last time that you ran the System File
Checker tool.
You can find the file on the Windows desktop or click on the Windows
Start button, select
Search, then For Files or Folders, then type
sfcdetails.txt in the search field to search for the file.
I have an SQLite
database stored on my MacBook Pro laptop that I use to track work requests. The
database file is named CRQ.db, since it tracks work done under
a Change Request (CRQ). Within that database are several
tables
two of which are "Equipment" and "Device". For every CRQ that I need to
deal with, I store information on equipment that is affected by the CRQ. The
equipment table has the following structure:
Name
Type
CRQ
Text
Device
Text
Project
Text
Notes
Text
The device field holds a unique name assigned to the particular device.
A device may be affected by more than one CRQ, so it can, potentially,
occur multiple times in the table. A CRQ can affect multiple pieces of
equipment.
You can use the Get-CimInstance cmdlet at a
PowerShell prompt
to obtain information on processes running on a Microsoft Windows system.
E.g., to see a list of all the processes currently running on a system, the
command gcim win32_process can be used; gcim is an
alias for Get-CimInstance, so you can use the shorter alias or
Get-CimInstance. The name of the process, its
process identifier
(PID),
handle count, working
set size, and
virtual memory size are displayed.
If you wish to be able to save webpages with the
Evernote
web clipper inside the Microsoft Edge browser, you can install the Evernote
extension using the following
steps:
Inside the Edge browser, click on the row of 3 dots that appears at
the upper, right-hand corner of the browser window.
Select Extensions.
Then click on Get extensions from the Store.
Look for Evernote in the list of extensions and click on it
to install the Evernote extension for Edge.
You will then see details on the extension, which is free. Click on
Get.
Once it is installed, you can click on the Launch button.
To check on a potential file system corruption issue on a Microsoft Windows 10
system, I
opened a command prompt window with administrator privileges and
used the chkdsk command to
check and repair the file system on drive C with chkdsk /r
c:. The chkdsk operation got to "Scanning and repairing drive
(C:): 10% complete", but then stayed there for hours. I finally powered
the system off and on again which prompted it to restart the drive scan
again. It quickly got to the 10% point again and then, again, stayed
there, so I powered the system off and on again. When I powered the
system off and on again, I saw "Preparing automatic repair" and then
"Diagnosing your PC." I then saw the following:
Automatic Repair
Your PC did not start correctly
Press "Restart" to restart your PC, which can sometimes fix the problem.
You can also press "Advanced options" to try other options to repair your
PC.
I clicked on Advanced options which led to a "Choose an option"
display where I could choose from the following options:
Choose an option
Continue
Exit and continue to Windows 10
Troubleshoot
Reset your PC or see advanced options
Turn off your PC
I clicked on Continue. I then saw a message advising I could skip
the disk check by pressing the space key within a number of seconds that
counted downwards; I hit the space bar before it got to zero and the
system rebooted normally.
I have an
Apache OpenOffice Calc spreadsheet that I use to track deposits to bank
accounts. I loaned a friend money some time ago for a used car; when I get a
check from him, I note it in a worksheet in the Calc workbook. I also get
checks from him sometimes unrelated to the auto loan repayment and have received
some checks that include the auto loan payment plus reimbursement for other
expenses. I have a "note" column in the worksheet where I'll always have "75",
if the check applies to the auto loan repayment, though there may be other
text before and after the "75" in the cell. So I thought it would be
easy to count the number of checks I've received from him that apply to the
auto loan repayment by using the formula below, since the note column is
column F and the deposits start in row 2 (the first row is a heading line)
and go through row 32:
=COUNTIF(F2:F32,"*75*")
That works in
Microsoft Excel, but it doesn't work in OpenOffice Calc (I'm
using version 4.1.1). The count is always zero, if I use the formula above.
I found I have to use the formula below, instead, which correctly reports
21 occurrences of 75 in column F at the moment:
=COUNTIF(F2:F32;".*75.*")
Excel will treat the first asterisk as representing a character or any
number of characters before the "75" and the asterisk after "75" as representingany number of characters appearing in the cell after "75". However, Calc
doesn't view the asterisks that way. Instead, I need to use a
regular
expression. In a regular expression (regexp), a period represents any
character and an asterisk represents zero or more occurrences of the preceding
element. For example, ab*c matches "ac", "abc", "abbc", "abbbc", and so on.
So the ".*" represents any character appearing zero or more times in the cell.
If I try using the formula I use in Calc in Excel, it will report zero
occurrences just as Calc reports zero occurrences when I use the formula that
works in Excel in Calc.
Since I want to obtain the total amount he has repaid so far, which
is the count of the number of occurrences of 75 in column F by $75, I use
the forumula below in Calc to obtain that amount, which returns
1575 as of today:
If you want to know which security patches were installed on a Microsoft
Windows system within a specific time period, e.g., the last month or the
last 3 months, you can use a Get-CimInstance command in a
PowerShell window. E.g.:
PS C:\Users\Lila> Get-CimInstance-Class win32_quickfixengineering | Where-Object { $_.InstalledOn -gt (Get-Date).AddMonths(-1) }
Source Description HotFixID InstalledBy InstalledOn
------ ----------- -------- ----------- -----------
Security Update KB4025376 NT AUTHORITY\SYSTEM 7/12/2017 12:00:00 AM
Security Update KB4025342 NT AUTHORITY\SYSTEM 7/12/2017 12:00:00 AM
PS C:\Users\Lila> Get-CimInstance-Class win32_quickfixengineering | Where-Object { $_.InstalledOn -gt (Get-Date).AddMonths(-3) }
Source Description HotFixID InstalledBy InstalledOn
------ ----------- -------- ----------- -----------
Security Update KB4020821 NT AUTHORITY\SYSTEM 6/17/2017 12:00:00 AM
Update KB4021572 NT AUTHORITY\SYSTEM 6/17/2017 12:00:00 AM
Update KB4022405 NT AUTHORITY\SYSTEM 6/17/2017 12:00:00 AM
Security Update KB4025376 NT AUTHORITY\SYSTEM 7/12/2017 12:00:00 AM
Security Update KB4025342 NT AUTHORITY\SYSTEM 7/12/2017 12:00:00 AM
PS C:\Users\Lila>
I have an SQLite database
that I use to track work requests. Some requests are time sensitive, i.e. they
need to be completed within a certain number of days from the time they are
approved. So I have an "Approved" and an "Implemented"
column in the
database to record the date I approved a request and the date it was
implemented. All requests should be completed within 5 business days, so
when I display the data on a webpage with
PHP, I want to see the
number of elapsed working days between the time I approved a request and the
time it was implemented. To do so, I use some code provided by George John
at
Calculate business days with a slight modification. The code I use appears
below:
function getWorkingDays($startDate, $endDate)
{
$begin = strtotime($startDate);
$end = strtotime($endDate);
if ($begin > $end) {
return 0;
} else {
$no_days = 0;
while ($begin <= $end) {
$what_day = date("N", $begin);
if (!in_array($what_day, [6,7]) ) // 6 and 7 are weekend
$no_days++;
$begin += 86400; // +1 day
};
return $no_days - 1;
}
}
I wanted to determine the manufacturer and model number of a motherboard in a
Windows server at a remote location. I didn't want to drive a half hour there,
open up the system's case to make that determination, and drive a half hour
back home. Since I have
Remote Desktop Protocol (RDP) access to the system, I connected by RDP and
ran the
WMIC command wmic baseboard get
product,manufacturer,model,serialnumber,version from a
command prompt. I saw the following output:
C:\>wmic baseboard get product,manufacturer,model,serialnumber,version
Manufacturer Model Product SerialNumber Version
00000000000000000000000000000000 S03 Server QCHCNB3440135 Revision A
C:\>
Since the manufacturer was listed as a string of all zeros, I decided to
install the free
Speccy program from Piriform. When
I installed and ran the software, it also showed all zeros for the
manufacturer.
You can use the LEFT and RIGHT functions in
the Microsoft Excel
spreadsheet program along with the LEN (length) function to remove the leftmost
or rightmost character from a text
string. These functions also work in
Google Sheets,
LibreOffice Calc,
which is the spreadsheet component of the
LibreOffice software
package, and
Apache OpenOffice Calc, which is the spreadsheet program included in
Apache OpenOffice,
though in the Apache OpenOffice Calc program you need to substitute semicolons
(;) for commas (,) in the formulas. E.g.,
in Apache OpenOffice Calc you would need to use =RIGHT(A5;LEN(A5) -1)
, instead of =RIGHT(A5,LEN(A5) -1) as you would in the other
programs.
Removing the leftmost character
The syntax for the RIGHT function is RIGHT(text,[numchars]).
If you don't include numchars, i.e., you use RIGHT(text)
then the value returned is the rightmost character in the string. E.g.,
if cell A1 has 1ABC in it, then =RIGHT(A1) returns
C. But suppose, instead, you want to remove the leftmost
charaacter from a string. You can use the RIGHT function to do
so. E.g., suppose I have a column of values, e.g.:
A
B
1
1ABC
2
2DEF
3
3GHI
4
4JKL
5
5MNO
If I want to remove the number at the beginning of each text
string and put the shortened strings in column B, I could, since the
strings are all 4 characters long, use =RIGHT(A1,3) in column B1
and then copy the formula down through the other cells in column B by clicking
in cell B1 and holding down the leftmost mouse button and dragging downwards
through the other cells in column B and then hitting Ctrl-D.
But suppose the strings vary in length. I.e., suppose I have a worksheet
containing the following strings in column A:
A user reported that she was unable to get her email today and was receiving
an error in Outlook when she attempted to download her email. I logged into
the email server, which runs
Dovecot. I tried
establishing a telnet connection to the
POP3 port on
the server. I was able to successfully connect to the
well-known port,
TCP
port 110, used for POP3 connections. I could then enter the user's
username with the user command, but I never received a
reponse from the server, i.e. from Dovecot. I eventually had to hit
ctrl-], i.e., the Ctrl and "]" keys to return to the shell prompt.
$ telnet 127.0.0.1 110
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
user nell
^]
telnet> quit
Connection closed.
$
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: http://www.nirsoft.net
*****************************************************************
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>
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:
Right-click on the Windows Start button, usually in the lower, left-h
and corner of the screen, then click on Settings.
From the Settings window, click on Apps.
Click on Default apps.
In the Default apps window, scroll down until you see Choose
default apps by file type and click on that text.
Scroll down the list of file types until you see the one for which you wish
to change the default application, e.g., .doc.
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.
You can then close the Settings window by clicking on the
"X" at the upper, right-hand corner of the window.
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.
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
./myscript.py 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)
###
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.
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
sqlitebrowser:
Version: 3.8.0
$ system_profiler SPApplicationsDataType | grep -i "sqlitebrowser" -A 2
sqlitebrowser:
Version: 3.8.0
--
Location: /Applications/sqlitebrowser.app
Get Info String: DB Browser for SQLite
$
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.:
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.
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.
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 jdoe@example.com
ssh: connect to host example.com 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 192.168.1.21
2017-07-13 21:59:06,818 fail2ban.actions [1664]: NOTICE [sshd] Ban 192.168.1.21
2017-07-13 21:59:11,538 fail2ban.filter [1664]: INFO [sshd] Found 192.168.1.21
#
You can determine the name for the jail and IP address is in by issuing
the command fail2ban-client status.
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.
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.
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
$
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.
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:
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"
try:
# 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."
sys.exit(1)
But the explicit Python error message can be obtained by using
except Exception, e as shown below:
try:
shutil.copy(countfile, backupfile)
except Exception,e:
print str(e)
print "Error! Unable to make a backup copy of the input file."
sys.exit(1)
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.
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.
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:
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.
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:
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:
<?php
$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.
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. example.com, so that the browser attempts
to access ajax.example.com, 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:
Click on the Apple icon at the top, left-hand side of your screen.
Choose System Preferences then Network.
Select the relevant network service, such as Wi-Fi or Ethernet, then click on the Advanced button.
Click on DNS.
Click in the Search Domains box and then click on the "+" at the bottom of that box to add a new search domain.
Type the name of the search domain, e.g. example.com.
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.
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.
If you use an outlook.com or hotmail.com 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:
Select Options from the drop down list.
Select Safe Senders.
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.
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
PID TTY STAT TIME COMMAND
19355 ? S 0:19 sshd: jim@pts/0
$ ps 15022
PID TTY STAT TIME COMMAND
15022 ? S 0:00 /usr/sbin/httpd -DFOREGROUND
$
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">.
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
Huron>
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
Huron>
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.
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."
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/Firefox.app/Contents/MacOS/firefox -v
Mozilla Firefox 45.8.0
$
You can also find the information in the
Info.plist file found at
/Applications/Firefox.app/Contents/Info.plist. The version number
will be on the line following the "key" line for CFBundleGetInfoString
and also after the "key" line for CFBundleShortVersionString
.
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.
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.
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:
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.
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.
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 myip.opendns.com @resolver1.opendns.com.
E.g.:
Both commands submit a
Domain Name System (DNS) query to the
DNS server resolver1.opendns.com, a name server maintained by
OpenDNS.
When you look up the
fully qualified domain name (FQDN) myip.opendns.com,
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.
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:
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.
If you wish to know whether a cell holds a
Uniform Resource Locator (URL), such as http://example.com, 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("http://superuser.com","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.
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 verzion.net 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
aol.com 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
x.aol.com, arg2=127.0.0.6, relay=omr-a006e.mx.aol.com [204.29.186.55], reject=55
0 5.7.1 Spam Block:mail from 204.29.186.55 refused - see http://dnsbl.sorbs.net/
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:
<?php
$filename = "/Users/jasmith1/Documents/www/test/presidents.db";
$db = new SQLite3($filename);
$results = $db->query('SELECT * FROM Terms');
while ($row = $results->fetchArray()) {
var_dump($row);
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.
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.
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
PHYAD: 0
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
$
I use the Collectorz.com 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. Collectorz.com
also provides comic, game, movie, and music database programs.
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:
Click on Start
Select Administrative Tools then select Computer Management and
then, under Sytem Tools, click on Shared Folders
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.
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 google.com, apple.com, and cisco.com
for %%i in ("216.58.217.142" "17.142.160.59" "72.163.4.161") 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
)
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.
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.
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.
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 https://raw.githubusercontent.com/Homebrew/install/master/install)". 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 https://raw.githubusercontent.com/Homebrew/install/master/install)".
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.
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.
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
#
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 <blainewatkins@example.com>
Date: Tue, April 18, 2017 6:09 pm
To:
Hi, I just uploaded a Document for you to see using Dropbox.
View|Download files and let me know what you think.
Thanks
Blaine
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.
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:
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 1500mA
If I used vertical-align: bottom, instead, the image would
appear as shown below:
24V 1500mA
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 1500mA
Though, in this case I could also have used the HTML code
⎓, 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.
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."
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.
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
C:\>
If I don't want to manually count the instances, I can use the
find command as
shown below:
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 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 http://cli.linksynergy.com/cli/common/login.php:
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.
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.
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.
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):
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.
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.
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
count_queued.py
. The name of the HTML file that was downloaded should be provided on the
command line. E.g.:
$ ./count_queued.py ~/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
$
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.
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:
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.
Select Privacy.
Click on the link under History for "remove individual cookies".
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.
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.:
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: centos.firehosted.com
* epel: mirror.us.leaseweb.net
* extras: centos.aol.com
* updates: mirror.umd.edu
No package unrar available.
Error: Nothing to do
# yum install rar
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: centos.firehosted.com
* epel: mirror.us.leaseweb.net
* extras: centos.aol.com
* updates: mirror.umd.edu
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.
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:
apple
banana
clementine
date
eggplant
fig
grape
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
banana
clementine
date
eggplant
fig
grape
$
If I wanted to ignore the first four lines and start output at the fifth
line, I could use more +5.
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 3.8.10.2 2015-05-20 18:17:19
Enter ".help" for usage hints.
sqlite> .output device.txt
sqlite> SELECT Device FROM Equipment;
sqlite> .output
sqlite>
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.
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".
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.
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.
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.
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 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
^C
--- 8.8.8.8 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
$
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.
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:
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-width
The maximum width of the
display area, such as a browser window
min-width
The minimum width of the
display area, such as a browser window
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.
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","").
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.
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.
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 ?.
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"
bgq13udo.default
$
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
SQLiterelational 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.
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:
When I attempted to edit a file, index.php, using the
vi editor, I saw
the following message:
E325: ATTENTION
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: example.com
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
$
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.
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.
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 securefileshares.com, 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=52.1.96.230; helo=mail.nova.phishme.
com; envelope-from=postmaster@return--path.com; receiver=john.a.doe@example.com
<text snipped>
Received: from mail.nova.phishme.com (mail.nova.phishme.com [52.1.96.230]) 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.
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 127.0.0.1 110
Trying 127.0.0.1...
Connected to 127.0.0.1.
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.
$ curl -o ip-ranges.json https://ip-ranges.amazonaws.com/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.
#!/usr/bin/python
import json
data = json.load(open('ip-ranges.json'))
for d in data["prefixes"]:
print d["ip_prefix"]
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}
C:\WINDOWS\system32>
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.
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
C:\Users\enzo\Documents>
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.
C:\>
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 @vtext.com - 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
5557654321@vtext.com. If the person uses
Sprint for phone and text messaging service, you would append
@messaging.sprintpcs.com to the 10-digit phone number, i.e.,
5557654321@messaging.sprintpcs.com. If the
user has AT&T for his/her
phone service, you can text the user by appending @txt.att.net to the number,
e.g. 5557654321@txt.att.net. For
T-Mobile,
you can append @tmomail.net to the phone number.
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
C:\Users\Lila>
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.
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:
#!/usr/bin/python
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")'
cursor.execute(sql)
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):
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."
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.
The steps below can be taken to install the
MySQLrelational 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.
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 3.8.10.2 2015-05-20 18:17:19
Enter ".help" for usage hints.
sqlite> .schema Tasks
CREATE TABLE "Tasks" (
`CRQ` TEXT NOT NULL,
`Task` TEXT NOT NULL,
`URL` TEXT,
`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 3.8.10.2 2015-05-20 18:17:19
Enter ".help" for usage hints.
sqlite> SELECT COUNT(*) FROM Tasks WHERE Approved >= '2017-02-01';
11
sqlite>
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:
First, ensure that the hash sign (#) is removed from the
LoadModule cgi_module libexec/apache2/mod_cgi.so 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.
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.:
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:
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.
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.
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 0.0.0.0:5900 Speleologist:0 LISTENING
C:\Users\Collen>
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.
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.
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.
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.
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.
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 "Firefox.app" 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 "Firefox.app" 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.
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:
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 Manager.app 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.
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
$
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)
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.
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 192.168.1.1/24 subnet, 192.168.1.2. You can then log into the router
by opening a browser window and pointing the browser to http://192.168.1.1.
To permit inbound access to an application through the Microsoft
Windows Firewall
on a Windows 8 system, you can take the following steps:
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.
From the Control Panel, select System and Security.
Click on Windows Firewall.
Click on Allow an app or feature through Windows Firewall.
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.
Find the application for which you wish to allow access through the firewall
and click on it to highlight and select it.
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".
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).
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 5.1.168.192.in-addr.arpa SOA
prisoner.iana.org
The server for which I was performing the troubleshooting has an IP
address of 192.168.1.5, 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.
If you wish to select only the records containing a particular
string, e.g., some word, etc., from a
MySQL
or MariaDBdatabase 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%";
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.
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.
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”;
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.
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 example.com, take the following
steps while logged into your GoDaddy email account through the web interface
to your email account.
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:
game/Update
tar: game/Update: Cannot open: File exists
game/FAQ
tar: game/FAQ: Cannot open: File exists
game/CONVERT.22
tar: game/CONVERT.22: Cannot open: File exists
game/BETA
tar: game/BETA: Cannot open: File exists
tar: game: Cannot utime: Operation not permitted
tar: Exiting with failure status due to previous errors
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.
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 pop3.example.com" 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 == xxx.xxx.xxx.xxx where
xxx.xxx.xxx.xxx 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.
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
orange
blue purple blue
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.
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.
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
Wiresharknetwork
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.:
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:
The sendmail queue can be flushed with the command sendmail -q -v
.
# sendmail -q -v
Running /var/spool/mqueue/v05IxmvR006276 (sequence 1 of 1)
<abad_kitty@moonpoint.com>... 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:
-q[time]
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.
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, 49.116.40.31. 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.
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.
While troubleshooting a network issue using the
free and open source (FOSS)
network analyzerWireshark, 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.
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
fi
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
fi
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.