Using the watch command

Watch disk usage updating every 3 seconds:
watch -d -n 3 'df -h'

Posted in Linux | Comments Off on Using the watch command

Sed strings to use in Vim

Sed strings make VIM very powerful. You can use them to do many things. The changes will not be written to the file until you save the file, so you are safe to experiment a bit.

To delete lines 4-12:

:4,12 d

To delete the current line:
:d

To replace the word foo with the word bar starting at the line where the cursor is through the end of the file:

:.,$s/foo/bar/

To add the word foo at the end of lines 24 – 34:

:24,34 s/$/foo/

To remove the spaces in the middle of a pip list output line and replace it with == so it can be used to install (if you have to recreate your pyenv):

1.) remove the header lines:
:1,2 d
2.) replace the spaces with double equals:
:%s/ +/==/g

To remove == and everything after from a pip list so that pip will install the newest version:

:%s/==.*//

To remove all lines that contain the strings error, warn, or fail (remove the /d to show the lines that the command will delete):

:g/error\|warn\|fail/d

To remove all lines that don’t contain the strings error, warn, or fail (remove the /d to show the lines that the command will delete):

:g!/error\|warn\|fail/d

v can replace the g! if you prefer:

:v/error\|warn\|fail/d

To reformat a paragraph in vim:

1. Use <CTRL-J> to join all lines in the paragraph
2. :gq

To remove all commented and blank lines from a file (remove the /d to show the lines that the command will delete):

:g/\v^(#|$)/d

To change the last character in a line to a semi-colon:

:%s/.{1}$/\;/

To replace all single quotes in a file with double quotes:

:%s/'/\"/g

To remove all extra spaces in all lines of a file:

:%s/ +//g

Use g to execute a cmd on regex to delete blank lines:

:g/^$/d

Substitute starting string to eol with newstring followed by comma:

:% s/<string>.*/<newstring>,/

Substitute invalid non-printable characters (U+00A0) with spaces:

%s/\%u00a0/ /g

Remove everything on line from the comma to eol:
:%s/,.*//

Remove all lines not beginning with IPv4 IP:
:%v/^\(\d\+\.\)\{3}\d\+/d

Posted in Linux | Comments Off on Sed strings to use in Vim

Tarring and passwording a directory

Tar and encrypt:
tar cz <dir>/ | openssl enc -aes-256-cbc -pbkdf2 -iter 10000 -e > out.tar.gz.enc

Decrypt:
openssl enc -aes-256-cbc -d -in out.tar.gz.enc | tar xz

Posted in Linux | Comments Off on Tarring and passwording a directory

Determine which SSL Ciphers are running on your site

To determine which SSL Ciphers your site supports, you can run this (rather intrusive) nmap command:
nmap -sV --script ssl-enum-ciphers -p 443 <hostname>

From the command line on the server, you can run this command:
sslscan -show-ciphers <hostname>:443

Posted in Apache, Linux, OPENSSL and TLS | Comments Off on Determine which SSL Ciphers are running on your site

Determine the Number of Cores on a VM

Since RedHat/Ubuntu/Debian’s /proc/cpuinfo has a separate entry for each CPU core, you can use this command to count them:
cat /proc/cpuinfo | grep processor | wc -l

Or do it with the following Python script:
—-
!/usr/bin/env python3

import os
import psutil

l1, l2, l3 = psutil.getloadavg()
CPU_use = (l3/os.cpu_count()) * 100

print(“CPU_use as computed by psutil.getloadavg: ” + str(CPU_use))

print(“cpu percent reported by psutil: ” + str(psutil.cpu_percent()))
print(“cpu count reported by psutil: ” + str(psutil.cpu_count()))
print(“cpu count reported by psutil with logical set to False: ” + str(psutil.cpu_count(logical=False)))

current_process = psutil.Process()
print(“cpu percent reported by psutil.Process ” + str(current_process.cpu_percent()))
—-

Posted in Linux | Comments Off on Determine the Number of Cores on a VM

Convert UTF-8 to UTF-16

To convert a UTF-8 encoded file to UTF-16, you can use iconv on the command line:

iconv -f utf-8 -t utf-16 oldfile > newfile

Posted in Linux | Comments Off on Convert UTF-8 to UTF-16

SSL Tunneling

To connect to MySQL through a tunnel

Open a tunnel on your local machine listening on localhost:3307 and forwarding everything to the mysqlserver server on port 3306, and doing it all via the ssh service on the gateway machine.

ssh -L 3307:domain.name.of.mysqlserver:3306 username@domain.name.of.gatewayserver

Now start mysql connecting to localhost on the port that you are tunneling mysql from the mysql server.

mysql -u username -p -h 127.0.0.1 -P 3307 databasename

mysql assumes it’s connecting to localhost, but on a non-standard port. In fact, the connection is being made securely to the remote mysql server, via the gateway machine and the local “mouth” of the ssh tunnel on your own machine.

—————————————————

tunnel all outbound E-mail traffic back to my personal server to avoid having to change SMTP servers when I am behind firewalls.

ssh -f user@personal-server.com -L 2000:personal-server.com:25 -N

—————————————————-

to send my Google Talk traffic encrypted through the firewall back to my server at home and then out to Google.

ssh -f -L 3000:talk.google.com:5222 home -N

—————————————————

Posted in Linux | Comments Off on SSL Tunneling

OpenSSH Legacy Options

If you are using an updated openssh package and suddenly can’t connect to sites that you could before the update, you can add an option to your .ssh/config file (create it if you don’t have one).

If you see this error:

Unable to negotiate with 127.0.0.1: no matching key exchange method found.
Their offer: diffie-hellman-group1-sha1

add this:

Host somehost.example.org
KexAlgorithms +diffie-hellman-group1-sha1

If you see this error:

Unable to negotiate with 127.0.0.1: no matching host key type found.
Their offer: ssh-dss

add this instead:

Host somehost.example.org
HostkeyAlgorithms ssh-dss

There are command line versions of these as well.

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 user@127.0.0.1

ssh -oHostKeyAlgorithms=+ssh-dss user@127.0.0.1

Note: It is worth noting that these weaker cyphers were removed from the configuration for a reason. If there is another way to connect without enabling them, it might be worth considering.

Posted in Linux | Comments Off on OpenSSH Legacy Options

Fun with Telnet

telnet can be used to connect you to servername on a specified port. You can gather information from the data returned from that connection:

telnet servername.com port

Then type:

HEAD / HTTP/1.0

bash-3.2# telnet 310.210.7.222 80
Trying 310.210.7.222…
Connected to servername.com.
Escape character is ‘^]’.
HEAD / HTTP/1.0

HTTP/1.1 200 OK
Date: Fri, 20 May 2016 15:00:24 GMT
Server: Apache/2.2.3 (Red Hat)
X-Powered-By: PHP/5.3.3
Connection: close
Content-Type: text/html; charset=UTF-8

You can see from this example, that the Apache version and the PHP version are available via this method.

Posted in Linux | Comments Off on Fun with Telnet

Ping Gone Wild

ping – probes hosts on the attached network link by sending icmp packets sent over IP
tcping – reports the reachability and round-trip time of an IP address hosted on the local network
arping – probes hosts on the attached network link by sending Link Layer frames using the Address Resolution Protocol (ARP) request method addressed to a host identified by its MAC address of the network interface.

Posted in Linux | Comments Off on Ping Gone Wild