Search This Blog


Windows 10 Hardware Temperature Monitoring Tools

Tool to monitor temperature of hardware components in Windows 10

Open Hardware Monitor - portable open source version of hwmonitor

Core Temp - more CPU measurement features

hwinfo - similar to Open Hardware Monitor and has thermal throttling detection


Terminal Ping Sweep

Result: List of IP addresses that respond to ping on the specified prefix
  1. Modify the prefix variable as necessary, and paste into terminal
  2. prefix="192.168.0."
  3. Copy and Paste the rest of the following script into the terminal application
  4. for i in {1..100}
            ping -c1 -W1 -i0.2 $prefix$i > /dev/null
            if [ $? -eq 0 ]
                    echo $prefix$i


Windows cmd ping sweep

Instead of installing a third party application which has the possibility to have spyware or other bad stuff in it. If you only need to do a ping sweep with no additional features it's probably easier just to do it in CMD.
  1. Open up cmd
  2. Run the following
  3. for /L %z in (1,1,254) do @ping 10.0.0.%z -w 10 -n 1 | find "Reply"


  • (1,1,254) indicates to test every address from 1-254
  • 10.0.0. is the network address prefix of addresses you want to test
  • %z is filled in with numbers from (1,1,254)
  • -w 10 - only waits 10ms before moving on
  • -n 1 - only tries once before moving on
  • find "Reply" looks for a succesful ping result and ignores unsuccessful


Scheduling Internet Speed Tests on Synology

SSH into the synology device

Download the following script to whichever directory you like


Allow execute permissions

chmod +x

Create a scheduled task via "Task Scheduler" section in control panel
Run Command should look similar to the following

/bin/python /path_to_script/

For some reason the output doesn't appear in the task scheduler window when the full output is displayed

However, the results are appearing properly in the email notification and when I reduce the amount of output by modifying the script a bit it displays properly as well
python --no-download --simple

You can automatically log the output of any script to a file as well in Task Scheduler.
This can be done by going to the Task Scheduler app, Settings, enabling output recording, and specifying a directory to store output.



Clean Console Log Output

To remove colour codes and redraw characters from console to make console logs more readable.

#!/usr/bin/env perl
while (<>) {
s/ \e[ #%()*+\-.\/]. |
(?:\e\[|\x9b) [ -?]* [@-~] | # CSI ... Cmd
(?:\e\]|\x9d) .*? (?:\e\\|[\a\x9c]) | # OSC ... (ST|BEL)
(?:\e[P^_]|[\x90\x9e\x9f]) .*? (?:\e\\|\x9c) | # (DCS|PM|APC) ... ST
\e.|[\x80-\x9f] //xg;


less /path/to/console.log | cleanLog | less


Limiting Bandwidth Using Robocopy

Robocopy does not have any built in bandwidth limiter by rate specifically.

But what you can do is use the inner packet gap switch /ipg:n to simulate a lower bandwidth by adding more delay between packets.

The equation to use to calculate is as follows:

D is the calculated latency or inner packet gap
Bd is the desired bandwidth you would like to transfer at
Ba is the available bandwidth to you

If my
Bd is 200kbps
Ba is 1000kbps


Therefore my /ipg:n will be /ipg:2048



Sourcing Files in Bash

I never quite understood why when you changed .bashrc you had to type the source command in order to make changes active.

Now I understand and it's fairly straight forward.

Your current bash environment is defined by a PID that can be found using

echo $$

Any newly spawned bash processes for scripts will fork off of that process and be given a new process ID.

All variables for that newly spawned process will be local to that newly forked process.

If you would like the variables that would typically be local to your forked script to be active in your current shell you can use the source command in order to make them local to your current shell.

This acts in the same way when you would like to make variables in the .bashrc script local to your current shell. When the computer boots it runs .bashrc and puts variables in your current shell. If you would like to make any variable changes to re-read into your current shell. Similarly to how you would make variables to a remote script available to your local shell by using the source command you can do the same for .bashrc



The above will make all variables in available to your local shell at echo $$

source .bashrc

The above will make all variables in script .bashrc available to your local shell at echo $$