Mount Veracrypt volumes Linux script

In Veracrypt you can save mounted volumes as favorites which makes it easier to mount those volumes when starting Veracrypt. Although the container and mount path are saved you still need to enter the volume’s password and key if needed for each volume being mounted. On top of that, when using Linux you’ll be prompted to enter your Linux account password for sudo. With several volumes to mount this can be time-consuming and cumbersome.

Fortunately, Veracrypt includes the ability to manage encrypted volumes from the command-line. You can supply the password and key to mount the volumes on the commannd-line in the terminal. You can put these commands in a script to mount multiple volumes. Running from script will allow you to mount several volumes and only have to enter your Linux password for sudo once. However, putting passwords in scripts is a big security risk.

A better way is to have the script prompt for the password. The following script will mount multiple volumes and only prompt for the password one time. To make this work I set the password for the Veracrypt volumes the same as my Linux system password. The script will pass the sudo password (which is the same as the Veracrypt password) to the Veracrypt command satisfying the sudo prompt.

#!/bin/bash
# Mount/unmount Veracrypt (Truecrypt) volumes on Dell laptop
# v2 - Check for mounted volumes and unmount if found. Otherwise mount volumes.

# save and change IFS
OLDIFS=$IFS
IFS=$'\n'

RUNDATE=`date +%Y%m%d`                     # append date to file
LOGFILE='/home/joey/script.log'
LOCKFILE='/home/joey/Temp/veracrypt.lock'  # file to indicate volumes should be mounted
SCRIPT=`basename "$0"`                     # get name of this script

echo --------------------------------------------------------------------------  | tee -a "$LOGFILE"
echo "Executing script: $SCRIPT" | tee -a "$LOGFILE"

# prompt for password
echo "Enter Password (not echoed): "
read -s PASSWORD 

echo "NOTE: If prompted to enter 'Administrator' password, ignore it."

# Check for lock file. If exists unmount volumes else mount volumes
if [ -f $LOCKFILE ]; then 

  echo "Lock file found." | tee -a "$LOGFILE"
  echo "Attempting to un-mount Veracrypt volumes" | tee -a "$LOGFILE"

  # Unmount Veracrypt volumes
  veracrypt --text --dismount

  # Display system notification
  notify-send "Veracrypt" "Veracrypt volumes unmounted." -t 0 -u Normal -i /usr/share/icons/mate/48x48/status/changes-prevent.png

  # Remove lock file
  rm $LOCKFILE

else

  echo "Attempting to mount Veracrypt volumes" | tee -a "$LOGFILE"

  # PUT KEYLESS VOLUMES FIRST
  # Volume 2
  VCSLOT=2
  VCVOLUME=/home/joey/e6ef0971-7801-442f-9f6c-f3f945922efb
  VCMOUNT=/media/veracrypt2
  VCPASSWD=$PASSWORD
  VCKEYFIL=
  echo "Mounting volume $VCVOLUME to mount point $VCMOUNT" | tee -a "$LOGFILE"
  echo $PASSWORD | veracrypt --text --mount $VCVOLUME $VCMOUNT --password $VCPASSWD --pim 0 --keyfiles "$VCKEY" --protect-hidden no --slot $VCSLOT --verbose

  # Volume 1 - requires key
  VCSLOT=1
  VCVOLUME=/home/joey/3c1547fa-1ad3-11eb-adc1-0242ac120002
  VCMOUNT=/media/veracrypt1
  VCPASSWD=$PASSWORD
  VCKEY=/home/joey/.safe/3c1547fa-1ad3-11eb-adc1-0242ac120002.key
  echo "Mounting volume $VCVOLUME to mount point $VCMOUNT" | tee -a "$LOGFILE"
  echo $PASSWORD | veracrypt --text --mount $VCVOLUME $VCMOUNT --password $VCPASSWD --pim 0 --keyfiles "$VCKEY" --protect-hidden no --slot $VCSLOT --verbose

  # List volumes
  echo "Mounted Veracrypt volumes:" | tee -a "$LOGFILE"
  echo $PASSWORD | veracrypt --text --list | tee -a "$LOGFILE"

  # Display system notification
  notify-send "Veracrypt" "Veracrypt volumes mounted." -t 0 -u Normal -i /usr/share/icons/mate/48x48/status/changes-prevent.png

  # Create lock file
  echo $(date) > $LOCKFILE

fi

# restore IFS
IFS=$OLDIFS

echo "Script completed: `date`" | tee -a "$LOGFILE"
echo --------------------------------------------------------------------------  | tee -a "$LOGFILE"


When the above script is run in terminal it prompts for the password and using “tee” outputs log entries to the screen and a file.

joey@HAVEN-E6520:~$ Scripts/veracrypt.v2.sh 
--------------------------------------------------------------------------
Executing script: veracrypt.v2.sh
Enter Password (not echoed): 
NOTE: If prompted to enter 'Administrator' password, ignore it.
Attempting to mount Veracrypt volumes
Mounting volume /home/joey/e6ef0971-7801-442f-9f6c-f3f945922efb to mount point /media/veracrypt2
Volume "/home/joey/e6ef0971-7801-442f-9f6c-f3f945922efb" has been mounted.
Mounting volume /home/joey/3c1547fa-1ad3-11eb-adc1-0242ac120002 to mount point /media/veracrypt1
Volume "/home/joey/3c1547fa-1ad3-11eb-adc1-0242ac120002" has been mounted.
Mounted Veracrypt volumes:
2: /home/joey/e6ef0971-7801-442f-9f6c-f3f945922efb /dev/mapper/veracrypt2 /media/veracrypt2
1: /home/joey/3c1547fa-1ad3-11eb-adc1-0242ac120002 /dev/mapper/veracrypt1 /media/veracrypt1
Script completed: Mon 12 Sep 2022 12:33:50 AM EDT
--------------------------------------------------------------------------
joey@HAVEN-E6520:~$ 

Running the script again causes it to dismount the volumes.

joey@HAVEN-E6520:~$ Scripts/veracrypt.v2.sh 
--------------------------------------------------------------------------
Executing script: veracrypt.v2.sh
Enter Password (not echoed): 
NOTE: If prompted to enter 'Administrator' password, ignore it.
Lock file found.
Attempting to un-mount Veracrypt volumes
Script completed: Mon 12 Sep 2022 12:34:04 AM EDT
--------------------------------------------------------------------------
joey@HAVEN-E6520:~$ 

Resources

https://linuxhint.com/how-to-install-and-use-veracrypt-on-ubuntu/

https://arcanecode.com/2021/06/14/veracrypt-on-the-command-line-for-windows/

Upgrade LibreOffice 7.3.2.2 on Linux Mint

Commands to install LibreOffice 7.3.2.2 from the Terminal in Linux Mint. Get link to most recent version from https://download.documentfoundation.org/libreoffice/stable/
# tip: cache password with "sudo ls"
# uninstall currently installed version
sudo apt-get remove libreoffice*
sudo apt-get remove --purge libreoffice*

# download and install LibreOffice
cd ~/Install
wget https://download.documentfoundation.org/libreoffice/stable/7.3.2/deb/x86_64/LibreOffice_7.3.2_Linux_x86-64_deb.tar.gz
tar -xvzf LibreOffice_7.3.2_Linux_x86-64_deb.tar.gz
cd LibreOffice_7.3.2.2_Linux_x86-64_deb/DEBS
sudo dpkg -i *.deb

# download and install offline help files 
cd ~/Install
wget https://download.documentfoundation.org/libreoffice/stable/7.3.2/deb/x86_64/LibreOffice_7.3.2_Linux_x86-64_deb_helppack_en-US.tar.gz
tar -xvzf LibreOffice_7.3.2_Linux_x86-64_deb_helppack_en-US.tar.gz
cd LibreOffice_7.3.2.2_Linux_x86-64_deb_helppack_en-US/DEBS
sudo dpkg -i *.deb

# delete extracted installation files
cd ~/Install
rm -rf ~/Install/LibreOffice_7.3.2.2_Linux_x86-64_deb
rm -rf ~/Install/LibreOffice_7.3.2.2_Linux_x86-64_deb_helppack_en-US

Upgrade LibreOffice 7.1.5.2 on Linux Mint

Commands to install LibreOffice 7.1.5.2 from the Terminal in Linux Mint. Get link to most recent version from https://download.documentfoundation.org/libreoffice/stable/

# tip: cache password with "sudo ls"
# uninstall currently installed version
sudo apt-get remove libreoffice-*
sudo apt-get remove --purge libreoffice-*

# download and install LibreOffice
cd ~/Install
wget https://download.documentfoundation.org/libreoffice/stable/7.1.5/deb/x86_64/LibreOffice_7.1.5_Linux_x86-64_deb.tar.gz
tar -xvzf LibreOffice_7.1.5_Linux_x86-64_deb.tar.gz
cd LibreOffice_7.1.5.2_Linux_x86-64_deb/DEBS
sudo dpkg -i *.deb

# download and install offline help files 
cd ~/Install
wget https://download.documentfoundation.org/libreoffice/stable/7.1.5/deb/x86_64/LibreOffice_7.1.5_Linux_x86-64_deb_helppack_en-US.tar.gz
tar -xvzf LibreOffice_7.1.5_Linux_x86-64_deb_helppack_en-US.tar.gz
cd LibreOffice_7.1.5.2_Linux_x86-64_deb_helppack_en-US/DEBS
sudo dpkg -i *.deb

# delete extracted installation files
cd ~/Install
rm -rf ~/Install/LibreOffice_7.1.5.2_Linux_x86-64_deb
rm -rf ~/Install/LibreOffice_7.1.5.2_Linux_x86-64_deb_helppack_en-US

Upgrade LibreOffice 7.1.2.2 on Linux Mint

Commands to install LibreOffice 7.1.2.2 from the Terminal in Linux Mint. Get link to most recent version from https://download.documentfoundation.org/libreoffice/stable/

# tip: cache password with "sudo ls"
# uninstall currently installed version
sudo apt-get remove libreoffice-*
sudo apt-get remove --purge libreoffice-*

# download and install LibreOffice
cd ~/Install
wget https://download.documentfoundation.org/libreoffice/stable/7.1.2/deb/x86_64/LibreOffice_7.1.2_Linux_x86-64_deb.tar.gz
tar -xvzf LibreOffice_7.1.2_Linux_x86-64_deb.tar.gz
cd LibreOffice_7.1.2.2_Linux_x86-64_deb/DEBS
sudo dpkg -i *.deb

# download and install offline help files 
cd ~/Install
wget https://download.documentfoundation.org/libreoffice/stable/7.1.2/deb/x86_64/LibreOffice_7.1.2_Linux_x86-64_deb_helppack_en-US.tar.gz
tar -xvzf LibreOffice_7.1.2_Linux_x86-64_deb_helppack_en-US.tar.gz
cd LibreOffice_7.1.2.2_Linux_x86-64_deb_helppack_en-US/DEBS
sudo dpkg -i *.deb

# delete extracted installation files
cd ~/Install
rm -rf ~/Install/LibreOffice_7.1.2.2_Linux_x86-64_deb/DEBS
rm -rf ~/Install/LibreOffice_7.1.2.2_Linux_x86-64_deb_helppack_en-US

Upgrade LibreOffice 6.4.5.2 on Linux Mint

Commands to install LibreOffice 6.4.5.2 from the Terminal in Linux Mint. Get link to most recent version from https://www.libreoffice.org/download/

# tip: cache password with "sudo ls"
# uninstall currently installed version
sudo apt-get remove libreoffice-*
sudo apt-get remove --purge libreoffice-*

# download and install LibreOffice
cd ~/Install
wget https://download.documentfoundation.org/libreoffice/stable/6.4.5/deb/x86_64/LibreOffice_6.4.5_Linux_x86-64_deb.tar.gz
tar -xvzf LibreOffice_6.4.5_Linux_x86-64_deb.tar.gz
cd LibreOffice_6.4.5.2_Linux_x86-64_deb/DEBS
sudo dpkg -i *.deb

# download and install offline help files 
cd ~/Install
wget https://download.documentfoundation.org/libreoffice/stable/6.4.5/deb/x86_64/LibreOffice_6.4.5_Linux_x86-64_deb_helppack_en-US.tar.gz
tar -xvzf LibreOffice_6.4.5_Linux_x86-64_deb_helppack_en-US.tar.gz
cd LibreOffice_6.4.5.2_Linux_x86-64_deb_helppack_en-US/DEBS
sudo dpkg -i *.deb

# delete extracted installation files
rm -rf ~/Install/LibreOffice_6.4.5.2_Linux_x86-64_deb
rm -rf ~/Install/LibreOffice_6.4.5.2_Linux_x86-64_deb_helppack_en-US

Copy filename and path from Office

You can copy to the clipboard the full filename, including the path, of the current document in Microsoft Office applications. This is helpful in increasing productivity since you do not have to open Windows Explorer then hunt down your file and copy the path from there (by holding down the SHIFT key – even MORE work!!)

In the Office application, in this case Excel, click on the File tab:

In the Info section the document name is displayed with the document’s location displayed right below it. This line is clickable. When clicked on you get the option to copy the link location to the clipboard:

Upgrade LibreOffice 6.2.5.2 on Linux Mint

Commands to install LibreOffice 6.2.5.2 from the Terminal in Linux Mint. Get link to most recent version from https://www.libreoffice.org/download/

# tip: cache password with "sudo ls"
# uninstall currently installed version
sudo apt-get remove libreoffice-*
sudo apt-get remove --purge libreoffice-*

# download and install LibreOffice
cd ~/Install
wget https://download.documentfoundation.org/libreoffice/stable/6.2.5/deb/x86_64/LibreOffice_6.2.5_Linux_x86-64_deb.tar.gz
tar -xvzf LibreOffice_6.2.5_Linux_x86-64_deb.tar.gz
cd LibreOffice_6.2.5.2_Linux_x86-64_deb/DEBS
sudo dpkg -i *.deb

# download and install offline help files 
cd ~/Install
wget http://download.documentfoundation.org/libreoffice/stable/6.2.5/deb/x86_64/LibreOffice_6.2.5_Linux_x86-64_deb_helppack_en-US.tar.gz
tar -xvzf LibreOffice_6.2.5_Linux_x86-64_deb_helppack_en-US.tar.gz
cd LibreOffice_6.2.5.2_Linux_x86-64_deb_helppack_en-US/DEBS
sudo dpkg -i *.deb

# delete extracted installation files
rm -rf ~/Install/LibreOffice_6.2.5.2_Linux_x86-64_deb
rm -rf ~/Install/LibreOffice_6.2.5.2_Linux_x86-64_deb_helppack_en-US

Get ShoreTel Agents Using Powershell

The Powershell script below can be used to quickly get the number of Shoretel Workgroup agents currently logged-in to take calls. Save the code to .ps1 file.

Add-Type -Path "C:\Program Files (x86)\MySQL\MySQL Connector Net 6.10.8\Assemblies\v4.5.2\MySql.Data.dll"
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString='server=172.18.1.10;port=4308;uid=st_configread;pwd=passwordconfigread;database=shoreware'}
$Connection.Open()
$MYSQLCommand = New-Object MySql.Data.MySqlClient.MySqlCommand
$MYSQLDataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter
$MYSQLDataSet = New-Object System.Data.DataSet
$MYSQLCommand.Connection=$Connection
$MYSQLCommand.CommandText='SELECT COUNT(UserDN) AS ''ActiveAgents'' FROM shoreware.workgroupagents WHERE AgentStateID not in (0);'
$MYSQLDataAdapter.SelectCommand=$MYSQLCommand
$NumberOfDataSets=$MYSQLDataAdapter.Fill($MYSQLDataSet, 'data')
foreach($DataSet in $MYSQLDataSet.tables[0])
{
 $ActiveAgents = $DataSet.ActiveAgents
}
$Connection.Close()
echo "`n`nTOTAL LOGGED IN AGENTS: $ActiveAgents`n`n"

When executed the script will return the number of agents logged-in similar to this:

Note: the MySQL .NET connector for the version of MySQL server running on your ShoreTel server must be installed on the workstation running the script.

Resources:
http://www.systemadept.com/2017/07/12/querying-mysql-databases-from-powershell/?i=1
https://www.quadrotech-it.com/blog/querying-mysql-from-powershell

Add Exchange account to Outlook Mail App

Microsoft has updated the Outlook Mail App (at least for Android) and broke the connection for Exchange accounts. If you already had an Exchange account you’ll likely find it no-longer synchronizes with Exchange.

Furthermore, if you attmept to delete and re-add the account you’ll find you cannot select a type of account to add (or so it seems).

You can still use the Outlook app to check Exchange mailboxes. You just have to know the trick!

  1. Tap the Gear icon to open the Settings window:
  2. Tap Add Account:
  3. Then select Add an email account at bottom of screen:
  4. The app will automatically find accounts on the device and select them to add. Unselect the accounts you don’t want added and then tap Add Account at bottom of screen:
  5. At this point the app will prompt for an email address. It will use this to create an IMAP account (we don’t want this). Enter email address and tap Continue
  6. Here is the trick! Tap the ? icon:
  7. At the bottom of the screen will be additional options. Tap Change account provider:
  8. Now, you can tap Exchange to create an Exchange account:
  9. You’ll likely need to enter additional information like server name, domain, etc. To do this enable Advanced Settings:
  10. Enter any needed information and tap the check-mark icon
  11. The Outlook Mail App will attempt to connect…
  12. … and if successful you should be able to view your Exchange mailbox:

These screenshots came off my Kindle Fire tablet. However, the same problem was overcome on a Lenovo 10″ tablet using these instructions.

Upgrade LibreOffice on Linux Mint

Commands to install LibreOffice 6.2 from the Terminal in Linux Mint. Get link to most recent version from https://www.libreoffice.org/download/

# tip: cache password with "sudo ls"
# uninstall currently installed version
sudo apt-get remove libreoffice-core
sudo apt-get remove --purge libreoffice-core

# download and install LibreOffice
cd ~/Install
wget https://www.libreoffice.org/donate/dl/deb-x86_64/6.2.3/en-US/LibreOffice_6.2.3_Linux_x86-64_deb.tar.gz
tar -xvzf LibreOffice_6.2.3_Linux_x86-64_deb.tar.gz
cd LibreOffice_6.2.3.2_Linux_x86-64_deb/DEBS
sudo dpkg -i *.deb

# download and install offline help files 
cd ~/Install
wget http://download.documentfoundation.org/libreoffice/stable/6.2.3/deb/x86_64/LibreOffice_6.2.3_Linux_x86-64_deb_helppack_en-US.tar.gz
tar -xvzf LibreOffice_6.2.3_Linux_x86-64_deb_helppack_en-US.tar.gz
cd LibreOffice_6.2.3.2_Linux_x86-64_deb_helppack_en-US/DEBS
sudo dpkg -i *.deb

# delete extracted installation files
rm -rf ~/Install/LibreOffice_6.2.3.2_Linux_x86-64_deb
rm -rf ~/Install/LibreOffice_6.2.3.2_Linux_x86-64_deb_helppack_en-US

Command-line Compression Options

A comparison of command-line options to compress files using 7-Zip and native commands in Windows and Linux.

For testing I created a Word document of Lorem Ipsum and saved it in Word and PDF formats.

Windows Command Prompt

There is no built-in Windows program able to run in a CMD prompt that does what is wanted.* However, the open-source utility 7za.exe can be copied to any Windows folder without installation and be executed from a batch file.


Command: 7z.exe a -t7z target.7z C:\source\folder\

C:\_Tools\7zip\7za.exe a -t7z C:\Temp\Zip\test.7z C:\Temp\Zip\Files\

Changing the archive type to “zip” causes 7Zip to create a slightly larger archive.

Powershell Core on Windows and Linux

Powershell Core can be installed on both Windows and Linux. The following commands will work with Windows Powershell (deprecated) and Powershell Core (open-source).


# Command syntax:
# Compress-Archive -Path C:\source\folder -DestinationPath C:\target\target.zip
  
Compress-Archive -Path C:\Temp\Zip\files -DestinationPath C:\Temp\Zip\powershell.zip


# Command syntax:
# Compress-Archive -Path C:\source\folder -DestinationPath C:\target\target.zip
  
Compress-Archive -Path /home/joey/temp/zip/files -DestinationPath /home/joey/temp/zip/powershell2.zip

Tar command on Linux and Windows 10 BASH

Linux includes the venerable “tar” command, once used to create tape-archives. Installing the Ubuntu Linux subsystem on Windows 10 brngs this feature to Windows as well.


# Command syntax:
# tar -czvf name-of-archive.tar.gz /path/to/directory-or-file
tar -czvf files.tar.gz /mnt/c/temp/zip/files/

Same command run on Linux Mint.


# Command syntax:
# tar -czvf name-of-archive.tar.gz /path/to/directory-or-file
tar -czvf files2.tar.gz /home/joey/temp/zip/files/

Bonus: Windows Compressed Folders

Just to compare how efficient Windows built-in feature is to the command-line options above.

 

Resources:

https://superuser.com/questions/1105516/comparing-7z-exe-and-7za-exe

* There are compression tools built-in to Windows such as compact and makecab that are not covered here.

Generate passwords using Powershell

The Powershell script below can be used to generate 20 passwords using random words and numbers. Save the code to .ps1 file along with a “words” file in .csv format.


# Generates passphrases similar to password generator on intranet
# inspired by:
# https://www.hanselman.com/blog/DictionaryPasswordGeneratorInPowershell.aspx

# requires CSV file in same directory as script
#--------------------------------------------------------------------------------------------------

$rand = new-object System.Random

# read-in very large file creating smaller list of random words
$words = Get-Content "words.csv" | Sort-Object {Get-Random} -unique | select -first 100

Function Create-Password
{ 
  # query the smaller list of words for single entry (2 times)
  $word1 = $words | Sort-Object {Get-Random} -unique | select -first 1  
  $word2 = $words | Sort-Object {Get-Random} -unique | select -first 1  

  # create random digits
  $number1 = Get-Random -Minimum 1000 -Maximum 9999
  
  # concatenante and return new random password
  return (Get-Culture).TextInfo.ToTitleCase($word1) + (Get-Culture).TextInfo.ToTitleCase($word2) + $number1

}

# generate 20 passwords
for($i=1; $i -le 20; $i++){
  Create-Password
}

When executed the script will return 20 random passwords similar to this:

Note: you will need a “words” file from which random words will be pulled. I already had a “words” table in a MySQL database and used it to query for words between 5 and 7 characters in length. This gave me a file with about 15,000 words.

More information about obtaining a words list can be found on the following sites:
https://github.com/dwyl/english-words
https://stackoverflow.com/questions/2213607/how-to-get-english-language-word-database

Move Dropbox files on Linux Mint

I have the Dropbox client installed on my Linux Mint machine and it has worked flawlessly for years. Suddenly, I started getting a notification pop-up telling me to move my Dropbox files as they will stop being synced in November.

A quick search revealed the rather cryptic message is a result of Dropbox’s decision to stop supporting certain file systems across all operating systems. With Linux appearing to be the most impacted as they will only support Ext4 without encryption (unless whole-disk; e.g. LUKS) going forward. Of course, I running Ext4 with my Home directory encrypted.

So, after looking for alternatives I decided to stay with Dropbox and try to work-around the problem. I decided I would create a partition that Dropbox would like. Since my laptop (an old Dell 6250) has an SD card reader I rarely use I decided to use an 16GB SD card (8 times more storage than I have with Dropbox).

First, I formatted an SD card as Ext4:

Then I moved the folder location in the Dropbox client to use the new directory. The client automatically moves the file and deletes the old location folder.


Next step was to create a symlink to make the old location still work for applications/scripts that would look to the old location:


ln -s /media/joey/Sync/Dropbox /home/joey/Dropbox
  

The only real risk is the SD card getting corrupted and losing the files. To address this a simple bash script will backup the files each night:


#!/bin/bash

# Backup Dropbox folder to local disk

# Run from via cron:
# /home/joey/Scripts/backup_dropbox.sh
# ---------- copy ----------
# Backup Dropbox at 1AM each day
# * 1 * * * /home/joey/Scripts/backup_dropbox.sh 1> /dev/null
# ---------- copy ----------

RUNDATE=`date +%Y%m%d`                     # append date to file
FILENAME=Dropbox_backup-$RUNDATE.tar.gz    # name of backup file
SOURCEDIR=/media/joey/Sync/Dropbox         # Dropbox location (real location)
TARGETDIR=/home/joey/Backups               # Destination of backup file

# run archive command
tar -cpzf $TARGETDIR/$FILENAME $SOURCEDIR 

  

Fix broken trust using Powershell

When trying to log in to PC using a domain credential you get the following error:

“The trust relationship between this workstation and the primary domain failed” error when you log in to Windows 7

At this point I would usually re-join to the domain or run the Network Wizard, reboot, and continue on. There has to be a better way. And in-fact, there is via the Powershell command:

Reset-ComputerMachinePassword –server -credential

However, when I ran the command to reset the password I got an error stating the account could not be found on the domain controller:

PS C:\A3336> Reset-ComputerMachinePassword -server DELLR710 -credential AP\client_admin
Reset-ComputerMachinePassword : Cannot find the computer account for the local computer from the domain controller DELLR710.
At line:1 char:1
+ Reset-ComputerMachinePassword -server DELLR710 -credential AP\client_admin ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (A3336:String) [Reset-ComputerMachinePassword], InvalidOperationException
    + FullyQualifiedErrorId : CannotFindMachineAccount,Microsoft.PowerShell.Commands.ResetComputerMachinePasswordCommand

PS C:\A3336>

The fix was to create the account on the domain controller which I was able to do with Powershell on another PC that had Remote Server Administration Tools (RSAT) installed.

    PS C:\AP01-1255-915> New-ADcomputer –name "A3336" –SamAccountName "A3336" -Enabled $true
    PS C:\AP01-1255-915>

Now when the command is run on the client PC I am prompted to enter a username and password with permission to join computers to the domain and the command completes successfully.

    PS C:\A3336> Reset-ComputerMachinePassword -server DELLR710 -credential AP\client_admin
    PS C:\A3336>

http://implbits.com/active-directory/2012/04/13/dont-rejoin-to-fix.html
https://ss64.com/ps/reset-computermachinepassword.html
https://support.microsoft.com/en-us/help/2771040/the-trust-relationship-between-this-workstation-and-the-primary-domain

Start remote PC using WOL and Powershell

How to power-on remote PC using wake-on-lan (WOL) and Powershell. Run from a Windows 7 Pro with Powershell running with domain admin credentials.

$Mac = "f0:92:1c:e3:8f:60"
$MacByteArray = $Mac -split "[:-]" | ForEach-Object { [Byte] "0x$_"}
[Byte[]] $MagicPacket = (,0xFF * 6) + ($MacByteArray  * 16)
$UdpClient = New-Object System.Net.Sockets.UdpClient
$UdpClient.Connect(([System.Net.IPAddress]::Broadcast),7)
$UdpClient.Send($MagicPacket,$MagicPacket.Length)
$UdpClient.Close()

PS C:\Install> ping -4 -t AP01-1221-314

Pinging AP01-1221-314.AP.local [10.10.1.130] with 32 bytes of data
Reply from 10.10.1.179: Destination host unreachable.
Reply from 10.10.1.179: Destination host unreachable.
Reply from 10.10.1.179: Destination host unreachable.
Reply from 10.10.1.179: Destination host unreachable.
Reply from 10.10.1.179: Destination host unreachable.
Reply from 10.10.1.179: Destination host unreachable.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Reply from 10.10.1.130: bytes=32 time=2ms TTL=128
Reply from 10.10.1.130: bytes=32 time=1ms TTL=128
Reply from 10.10.1.130: bytes=32 time=2ms TTL=128
Reply from 10.10.1.130: bytes=32 time=2ms TTL=128
Reply from 10.10.1.130: bytes=32 time=2ms TTL=128
Reply from 10.10.1.130: bytes=32 time=2ms TTL=128

Ping statistics for 10.10.1.130:
  Packets: Sent = 19, Received = 12, Lost = 7 (36% loss),
Approximate round trip times in milli-seconds:
  Minimum = 1ms, Maximum = 2ms, Average = 1ms
Control-C
PS C:\Install>

Just change MAC address and copy and paste. Of course, WOL must be enabled on remote PC for this to work.

Note: you’ll need Remote Server Administration Tools (RSAT) installed which you can download from Microsoft:
https://support.microsoft.com/en-us/help/2693643/remote-server-administration-tools-rsat-for-windows-operating-systems

Reset LEDE/OpenWRT using Failsafe boot mode

I had just installed OpenWRT and was making changes (of course without reading the documentation) when I had changed the networking settings losing access to the router’s interface.

Fortunately OpenWRT provides a way to recover according to OpenWRT’s website: “LEDE allows you to boot into a failsafe mode that overrides its current configuration. If your device becomes inaccessible, e.g. after a configuration error, then failsafe mode is there to help you out. When you reboot in failsafe mode, the device starts up in a basic operating state, with a few hard coded defaults, and you can begin to fix the problem manually.”

First, thing is to set your computer’s IP address to something like 192.168.1.2. The router will use 192.168.1.1 when booted in Failsafe mode.

Then connect the computer to the router’s WAN port.

Now the hard part. According to the documentation the router’s LEDs will display a moderate 0.1 second blinking rhythm during those two seconds, when router waits for user to trigger the failsafe mode. After plugging in the router I just guessed at when the 2-second window arrived and pressed the QSS/WPS button. After which the SYS LED started blinking rapidly.

Back on the computer I SSH’d to the router using root@192.168.1.1 for the username and address. There is no password for root.

joey@HAVEN-E6520 ~ $ ssh root@192.168.1.1
The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.
RSA key fingerprint is SHA256:PAkYhCNr1sBDT/ADAn/iPh3ztT1yvlgR+RTHYVM0/fA.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.1' (RSA) to the list of known hosts.

BusyBox v1.25.1 () built-in shell (ash)
     _________
    /        /\      _    ___ ___  ___
   /  LE    /  \    | |  | __|   \| __|
  /    DE  /    \   | |__| _|| |) | _|
 /________/  LE  \  |____|___|___/|___|                      lede-project.org
 \        \   DE /
  \    LE  \    /  -----------------------------------------------------------
   \  DE    \  /    Reboot (17.01.4, r3560-79f57e422d)
    \________\/    -----------------------------------------------------------

================= FAILSAFE MODE active ================
special commands:
* firstboot	     reset settings to factory defaults
* mount_root	 mount root-partition with config files

after mount_root:
* passwd			 change root's password
* /etc/config		    directory with config files

for more help see:
http://wiki.openwrt.org/doc/howto/generic.failsafe
=======================================================

=== WARNING! =====================================
There is no root password defined on this device!
Use the "passwd" command to set up a new password
in order to prevent unauthorized SSH logins.
--------------------------------------------------
root@(none):~# 
root@(none):~#

Because I had just installed OpenWRT I decided to just reset the router and start over. To do this I just entered the command firstboot and hit enter.

TP-LINK 300M Wireless N Gigabit Router
Model No. TL-WR1043ND
https://wiki.openwrt.org/doc/howto/generic.failsafe
https://openwrt.org/docs/guide-user/troubleshooting/failsafe_and_factory_reset
https://openwrt.org/toh/tp-link/tl-wr1043nd#installation