Monday, November 04, 2019

[howTo] List directories that contain a file, according to a pattern

BASH text manipulation can do it, but this is more elegant if you're already using find in linux...

find (pattern here) -printf '%h\n' | sort | uniq

Example:
find . -type -f -name '*txt' -printf '%h\n' | sort | uniq

Friday, August 31, 2018

[Info] Another 2-drive failure on RAID5

Currently trying to fix another 2-drive failure on my mdadm raid5. The regular solution of --assemble --force is not working. But first some context.

The rig is a 7-drive mdadm RAID5 consisting of mis-matched branded 2TB drives. 5 of those drives are attached to SATA ports on the motherboard, while another 2 are in a 5-disk Rosewill SATA enclosure. This enclosure is attached via a Sil 3132 PCIe eSata card that supports port-multiplication.

03:00.0 RAID bus controller: Silicon Image, Inc. SiI 3132 Serial ATA Raid II Controller (rev 01)

This and the enclosure came as part of Rosewil's RSV-5 system.

I had previous been usin gthe RSV-4 system, which worked fairly well. That system eventually gave me errors withing dmesg, that I originally attributed to a bad eSATA cable. Eventually that enclosure died because of an errant power surge.

Replacing it with the RSV-5 yielded hte same dmesg errors. No amount of replacement would alleviate the errors. Eventually I figured out, that the errors when away after I upgraded from Ubuntu 14.04 to 16.04. It has performed well since.

Recently I ran into similar ( but not exact) errors as before.

I have now tried my usual trick ( --assemble --force, and the drives in the correct order). But now the error comes back as:

sudo mdadm --verbose --assemble --force /dev/md127 /dev/sdf1 /dev/sdc1 /dev/sdb1 /dev/sdd1 /dev/sdg1 /dev/sde1 /dev/sdh1
mdadm: looking for devices for /dev/md127
mdadm: /dev/sdf1 is identified as a member of /dev/md127, slot 0.
mdadm: /dev/sdc1 is identified as a member of /dev/md127, slot 1.
mdadm: /dev/sdb1 is identified as a member of /dev/md127, slot 2.
mdadm: /dev/sdd1 is identified as a member of /dev/md127, slot 3.
mdadm: /dev/sdg1 is identified as a member of /dev/md127, slot 4.
mdadm: /dev/sde1 is identified as a member of /dev/md127, slot 5.
mdadm: /dev/sdh1 is identified as a member of /dev/md127, slot 6.
mdadm: added /dev/sdc1 to /dev/md127 as 1
mdadm: added /dev/sdb1 to /dev/md127 as 2
mdadm: added /dev/sdd1 to /dev/md127 as 3
mdadm: added /dev/sdg1 to /dev/md127 as 4 (possibly out of date)
mdadm: added /dev/sde1 to /dev/md127 as 5
mdadm: added /dev/sdh1 to /dev/md127 as 6 (possibly out of date)
mdadm: added /dev/sdf1 to /dev/md127 as 0
mdadm: /dev/md127 assembled from 5 drives - not enough to start the array.


I thought it was because the Event counter was too far off:

         Events : 120796
         Events : 120796
         Events : 120796
         Events : 120796
         Events : 120796
         Events : 120788
         Events : 120788


For posterity here is a good example of a drive:

/dev/sdb1:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : f21f5306:c8a07e60:fad3a920:52a40d5b
  Creation Time : Tue Dec 21 20:21:48 2010
     Raid Level : raid5
  Used Dev Size : 1953511936 (1863.01 GiB 2000.40 GB)
     Array Size : 11721071616 (11178.09 GiB 12002.38 GB)
   Raid Devices : 7
  Total Devices : 5
Preferred Minor : 127
    Update Time : Thu Aug  9 23:39:20 2018
          State : clean
 Active Devices : 5
Working Devices : 5
 Failed Devices : 2
  Spare Devices : 0
       Checksum : ce567320 - correct
         Events : 120796
         Layout : left-symmetric
     Chunk Size : 64K
      Number   Major   Minor   RaidDevice State
this     2       8       17        2      active sync   /dev/sdb1
   0     0       8       81        0      active sync   /dev/sdf1
   1     1       8       33        1      active sync   /dev/sdc1
   2     2       8       17        2      active sync   /dev/sdb1
   3     3       8       49        3      active sync   /dev/sdd1
   4     4       0        0        4      faulty removed
   5     5       8       65        5      active sync   /dev/sde1
   6     6       0        0        6      faulty removed

A drive that was kicked:

/dev/sdh1:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : f21f5306:c8a07e60:fad3a920:52a40d5b
  Creation Time : Tue Dec 21 20:21:48 2010
     Raid Level : raid5
  Used Dev Size : 1953511936 (1863.01 GiB 2000.40 GB)
     Array Size : 11721071616 (11178.09 GiB 12002.38 GB)
   Raid Devices : 7
  Total Devices : 7
Preferred Minor : 127
    Update Time : Thu Aug  9 23:31:29 2018
          State : clean
 Active Devices : 7
Working Devices : 7
 Failed Devices : 0
  Spare Devices : 0
       Checksum : ce567281 - correct
         Events : 120788
         Layout : left-symmetric
     Chunk Size : 64K
      Number   Major   Minor   RaidDevice State
this     6       8      113        6      active sync   /dev/sdh1
   0     0       8       81        0      active sync   /dev/sdf1
   1     1       8       33        1      active sync   /dev/sdc1
   2     2       8       17        2      active sync   /dev/sdb1
   3     3       8       49        3      active sync   /dev/sdd1
   4     4       8       97        4      active sync   /dev/sdg1
   5     5       8       65        5      active sync   /dev/sde1
   6     6       8      113        6      active sync   /dev/sdh1

I opened up this thread on ubuntu forums:

https://ubuntuforums.org/showthread.php?t=2399971&p=13796868#post13796868

They suggested I try --run.

This yielded:

sudo mdadm --verbose --assemble --force --run /dev/md127 /dev/sdf1 /dev/sdc1 /dev/sdb1 /dev/sdd1 /dev/sdg1 /dev/sde1 /dev/sdh1
mdadm: looking for devices for /dev/md127
mdadm: /dev/sdf1 is identified as a member of /dev/md127, slot 0.
mdadm: /dev/sdc1 is identified as a member of /dev/md127, slot 1.
mdadm: /dev/sdb1 is identified as a member of /dev/md127, slot 2.
mdadm: /dev/sdd1 is identified as a member of /dev/md127, slot 3.
mdadm: /dev/sdg1 is identified as a member of /dev/md127, slot 4.
mdadm: /dev/sde1 is identified as a member of /dev/md127, slot 5.
mdadm: /dev/sdh1 is identified as a member of /dev/md127, slot 6.
mdadm: added /dev/sdc1 to /dev/md127 as 1
mdadm: added /dev/sdb1 to /dev/md127 as 2
mdadm: added /dev/sdd1 to /dev/md127 as 3
mdadm: added /dev/sdg1 to /dev/md127 as 4 (possibly out of date)
mdadm: added /dev/sde1 to /dev/md127 as 5
mdadm: added /dev/sdh1 to /dev/md127 as 6 (possibly out of date)
mdadm: added /dev/sdf1 to /dev/md127 as 0
mdadm: failed to RUN_ARRAY /dev/md127: Input/output error
mdadm: Not enough devices to start the array.

It was suggested that maybe the Input/Output error was because of one of the drives instead of the md127 not being able to be created.

Googling has not resulted in any conclusive direction.


I did find this possible sokution:

https://ubuntuforums.org/showthread.php?t=2276699&page=2&highlight=mdadm+event+counter
sudo mdadm --stop /dev/md2
sudo mdadm --zero-superblock /dev/sd[abcdhijk]
sudo mdadm --create --assume-clean /dev/md2 /dev/sd[abcdhijk]

Though it is cautioned as the "nuclear option" and thus I'm saiving it for when all other alternatives have been exhausted .

 I will keep this page updated as I try more things.

Monday, May 01, 2017

[howTo] Improve piaware results

I noticed I've got drastically better results with piaware ( Raspberry Pi + Flight Aware ADS-B ) by enabling SSH, and upgrading the underlying raspbian packages.

Enable ssh on raspbian:

  • Mount the micro-sd on another computer. 
  • Create an empty file called "ssh" 
  • Boot the Pi
  • sudo apt-get update; sudo apt-get upgrade

Alternatively you can go through flightware and issue an "Upgrade all installed Debian Packages" command. 

My results went from: 18k reports to 50k reports (Fri vs Fri comparison). With no change to antenna placement or hardware. 


Dramatic difference. Pretty obvious when the change was made. 


Monday, April 17, 2017

[howTo] Fix DNS on OpenVPN headless install + (Private Internet Access)

Ran into an issue when getting a headless OpenVPN client working with Private Internet Access. After the connection was up, system could not resolve DNS.

Quick and dirty solution is to add a public nameserver to /etc/resolvconf/resolv.conf.d/head

cat /etc/resolvconf/resolv.conf.d/head
nameserver 8.8.8.8

There's probably a better way to have OpenVPN get a DNS from PIA, but I'll have work that out later.
 

Friday, February 10, 2017

[howto] Install DokuWiki in Ubuntu 14.04 and nginx on DigitalOcean VPS

This is the base link I used:

https://www.digitalocean.com/community/tutorials/how-to-install-dokuwiki-with-nginx-on-an-ubuntu-12-04-vps

Its slightly old, meant for Ubuntu 12.04. But if you're somewhat familiar with linux and how nginx works, you should have no trouble getting it working.

Comments on the bottom also have changes needed to get it working in 16.04, the next LTS.

Thursday, February 09, 2017

[howto] Fix certbot-auto renew failure (404)

Here's how to fix this type of error:

-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/my-domain-example.com.conf
-------------------------------------------------------------------------------
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for my-domain-example.com
http-01 challenge for www.my-domain-example.com
Waiting for verification...
Cleaning up challenges
Attempting to renew cert from /etc/letsencrypt/renewal/my-domain-example.com.conf produced an unexpected error: Failed authorization procedure. my-domain-example.com (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://my-domain-example.com/.well-known/acme-challenge/0s8Ci_55qtap46cwbXbL8uhGRRnf_M7_tkcH1DjObjU: "
404 Not Found

404 Not Found


", www.my-domain-example.com (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://www.my-domain-example.com/.well-known/acme-challenge/3ZwAH4Q5mgHx3hCKty7OYsDHgh9ZiwlgrI-JnSMA6XQ: "
404 Not Found

404 Not Found


". Skipping.

All renewal attempts failed. The following certs could not be renewed:
  /etc/letsencrypt/live/my-domain-example.com/fullchain.pem (failure)
1 renew failure(s), 0 parse failure(s)

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: my-domain-example.com
   Type:   unauthorized
   Detail: Invalid response from
   http://my-domain-example.com/.well-known/acme-challenge/:
   "
   404 Not Found
   
   

404 Not Found

   
"

   Domain: www.my-domain-example.com
   Type:   unauthorized
   Detail: Invalid response from
   http://www.my-domain-example.com/.well-known/acme-challenge/:
   "
   404 Not Found
   
   

404 Not Found

   
"

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A record(s) for that domain
   contain(s) the right IP address.

The error is showing that the client is getting a 404 error webpage as a response to its challenge. The reason this seemed to be happening was that I had HSTS on, which prevented the challenge from going through properly.

For me the the answer was to disable SSL for that website. Then run the certbot-auto renew. This allowed the script to renew the certs. Afterwards simply re-enable SSL.

The simplest way for me to disable SSL was to remove the relevant entries in my config file.
/etc/nginx/sites-available/ 

Sunday, December 18, 2016

[howto][svn] Quickly revert a commit

There are more flexible ways, but here is a quick way to simply revert one commit.

svn merge -c -[R]

R = Revision.

So reverting commit 5400 would be:

svn merge -c -5400
Don't forget that dash before the revision.

Taken from:

 http://stackoverflow.com/questions/13330011/how-do-i-revert-an-svn-commit

Tuesday, December 06, 2016

[VirtualBox][howto] Map COM port higher than COM9

According to https://www.virtualbox.org/ticket/6421

Trying to map a COM port higher than COM9 in virtual box will result in this error:

(VERR_FILE_NOT_FOUND).
Details:
Fehlercode: E_FAIL (0x80004005)
Komponente: Console
Interface: IConsole {6375231a-c17c-464b-92cb-ae9e128d71c3}

The solution is to give the full path:

COM12 would be \\.\COM12.

Saturday, October 08, 2016

[Kodi] [howto] Enable Chinese Subtitles

Enabling chinese ( or really any non-western character based) subtitles in Kodi should be simple, but requires a few steps that, when not performed perfectly, leads to a frustrating set of garbage characters.


1.) Replace Kodi's default arial.ttf ( or add ) a font that has full unicode support. Most tutorials online use DejaVuSans+DriodSansFallback.ttf. Unfortunately the post I found had a faulty link, but a bit of quick googling showed it was available here:

DejaVu Sans Font Free by DejaVu Fonts | Font Squirrel


2.) Place the .ttf file in Kodi's "Fonts" folder. Depending on your platform this can be in different places. Here are the common ones I've found:

Linux: /usr/share/kodi/media/Fonts/.
OSX: /Users//Library/Application Support/Kodi/kodi/media/Fonts

(For OSX, the Fonts folder wasn't there, so I had to create it).

3.) Choose the font in: Settings>Video>Subtitles>Font for use for Subtitles.

4.) Choose the right character set: Settings>Video>Subtitles>Character Set (for Chinese I used "Chinese Simplified (GBK)". Without this step, you will get garbage output, regardless of the font.

5.) Optional: Add the language you'd like to Download for, if you use the subtitle downloaders, which are quite helpful.

If any options don't appear, make sure you're in the "Expert" mode for the settings.

Troubleshooting:

If you're seeing BOXES for the text, then your font doesn't support the right character set, change your font.

If you're seeing GARBAGE for the test, then you haven't chosen the correct character in the settings. Choose the correct one.

Saturday, June 25, 2016

[howto] [Linux] proxychains + SOCKS5 best practices

Recently was messing around with proxychains in order to allow some commands and programs that don't natively support proxies to be used more securely.

I followed this excellent tutorial:


This worked great, but it requires an SSH tunnel. This is great if you have access to a VPS. But what if you're using some kind of commercial VPN service ( such as PIA ). You need to set up proxychains to use SOCKS5. 

This isn't very difficult. You simply need to add the following line to the [ProxyList] section of your proxychains.conf file:

socks5 IP Port Username Password

I set it up for PIA, so this was my config:

 socks5 109.201.154.239 1080   username ( the one starting with x) password (yes hardcoded, but later on we have a work-around for this glaring security hole).

Unfortunately proxychains seems to not handle DNS names, so I used an IP for PIA's socks proxy ( proxy-nl.privateinternetaccess.com ).

The instructions are available at:

PIA Instructions Page

nslookup proxy-nl.privateinternetaccess.com yielded quite a few IPs:

Name:    proxy-nl.privateinternetaccess.com
Address: 109.201.138.234
Name:    proxy-nl.privateinternetaccess.com
Address: 109.201.154.245
Name:    proxy-nl.privateinternetaccess.com
Address: 109.201.154.165
Name:    proxy-nl.privateinternetaccess.com
Address: 46.166.186.204
Name:    proxy-nl.privateinternetaccess.com
Address: 109.201.138.229

.
.
.
.






You can pick any one to use. Though, I imagine they are used in round-robbin to share the load of the users. So if your proxy stops working all of a sudden, try changing to another IP.

Also the default setting:

# socks4  127.0.0.1 9050

Should be disabled, if you are using strict_chain, since it will error at not being able to contact the DNS through the (non-existant) TOR tunnel.

Test the connection:

proxychains wget www.google.com

Last of all, is the security concern about having to hard-code your password in a .conf file. My workaround has been to use a local, user-only file. Instead of using the above in /etc/proxychains.conf, create the same file in:

~/.proxychains/proxychains.conf

Create the directory if its not already there. Then ensure that only your user may read the file:


chmod go-rwx ~/.proxychains/proxychains.conf

A hash or shadow file would be better, but I haven't quite figured out how to have proxychains use something like that unfortunately.

Hope this is helpful!
 


Wednesday, April 27, 2016

initramfs + cron

If you find that your cron jobs aren't running until you first "edit" the cron job ( even though it was set in the initial initramfs). Check that you have the proper cron.update file, and that both files are owned by root. If one is owned by another user, say the user that you used to create the file, cron will read the config but not run the job. Silently.

Monday, December 14, 2015

Future Story Ideas

Incorporate Demon Hunter introduction.

Maybe play on DK vs DH. Hotplate vs Demon Hunter.

Could be a conflict with Bob? Or, have Bob welcome DH, like he did with Hotplate. Eventual romance between Hotplate and DH? Might be a bit cheesy, but kind of fits, both "forever" changed.

Think on it a bit.

Wednesday, November 25, 2015

[Windows 7] Recover window from "off-screen"

Found this tip from: http://www.virtualdub.org/blog/pivot/entry.php?id=228

Basically:

  • Right-click on the window caption on the taskbar, or select it and use Alt+Space.
    • Alt-Space worked for me, but right click did not.
  • If the Restore option is available, select it to pop the window out of minimized or maximized state.
  • Choose the Move option.
  • Hit an arrow key.
  • Move the mouse.

Tuesday, November 17, 2015

[ServerFarm] Todo list

Home lab todo list:


  1. Set Up home DNS server                      - Done
  2. Check if Valkyrie2. is operational        - Done, unsuccessful
  3. Re-thermal paste Pegasus
  4. Re-Thermal paste Galactica
  5. Get 1-3TB drive for Hiigara                  - Done. 1TB datastore
  6. Activate Windows on Squirrel, virtual-1, and saarkin-cho
  7. Reformat Pegasus, windows side
  8. Upgrade Mini to T7600
  9. Fix pi's Kodi subtittle handling 
    1. Done. But Chinese Characters still not working
    2. Installed OpenSubtittles using SuperRepo
    3. Done, installed Chinese fonts into Raspbian Pi sub-system
    4. Upgrade to Raspbian Jessie. 
  10. Add license to ESXi on Hiigara

Monday, November 09, 2015

[HOWTO] Install Kodi on Raspbian on a RP2

After my HTPC (valkyrie) died from a tiny fall, I've been using a Fire Stick as my Kodi player in the living room. While a nice bit of kit, its not without its disadvantages. Its most definitely a temporary solution.

I'm trying to fix Valkyrie, but that's proving annoying and time consuming. I needed a more permanent solution, in case I don't get it fixed. My first plan was to use a Mac Mini. In fact I recently bought a used Core Duo Mac Mini circa 2007. Unfortunately again, its not due to arrive for another few days, and I'm a very impatient guy.

I then remembered that the Raspberry Pi 2 makes an excellent Kodi player Better yet, its already running 24/7 monitoring my humidor, a task that doesn't even begin to task its 4 cores. So I decided to install Kodi, on Raspbian.

Why not use Openelec or some other Kodi-centric distribution? Simply because I already had the humidor setup running on raspbian and didn't feel like redoing it. 

First to get my up-to-now-headless Raspberry Pi 2 ready, I had to get its HDMI output running correctly.

  • Fix Flashing Menu Bar:

    • Add your used to the video and audio group 
    sudo usermod -aG audio myUser
    sudo usermod -aG video myUser






  • Fix Resolution on HDMI

      • Find the correct resolution:
        • tvservice -d edid 
        • edidparser edid
      • Set bootargs to boot that resolution
        • sudo emacs /boot/config
        •  hdmi_group=1
        • hdmi_mode=16
    • Install Kodi
      • Follow instructions from: http://michael.gorven.za.net



    Tuesday, September 22, 2015

    [RECIPE] Twice Fried Chicken Wings

    Quick Recipe, hopefully have pictures and more detailed directions later:

    20-24 Chicken Wings, separated into drumlets and wing sections.
    4 Tablespoons of general purpose flour
    3 eggs
    1 Teaspoon of Thyme
    1 Teaspoon of Ceyenne Pepper
    1 Teaspoon of Salt
    1 Teaspoon of Pepper
    1 Teaspoon of Soy Sauce
    1 tablespoon of lemon.


    1. Thoroughly thaw the Chicken Wings.  
    2. Heat deep fryer on high. 250-300F at least
    3. Mix the breading
      • Add the flour to a large mixing bowl
      • Add the 3 eggs, scrambled first
      • Add salt, cayenne pepper, black pepper and Thyme
      • Add Lemon and Soy Sauce
      • Mix thoroughly with a spoon/fork
    4. Pour breading over Chicken Wings. 
    5. Mix thoroughly with hands to ensure full coating.
    6. Let stand for 10 minutes, or until oil is ready.
    7. Drop a single wing, and cook thoroughly ( 6-7 minutes). 
      1. Taste and adjust Salt/Pepper/Lemon as needed. 
    8. Drop 4-5 wings into oil at a time. Cook for 2.5-3 minutes. 
      1. Wings should be light brown
    9. Remove from oil and put on strainer to cool. 
    10. Repeat for all Wings. 
    11. Once all wings are done, refry the first set another 1.5-2 minutes. 
      1. Wings should come out darker brown
      2. Allow wings to rest for 5 minutes, that should make the outside very crispy
    12. Repeat for all wings.
    13. Enjoy. 

    Tuesday, September 08, 2015

    Recipe: Cast Iron Skillet Steak

    Defrost.

    Season with Montreal + Cumin

    Preheat oven to 375, with Cast iron skillet inside.

    2 minutes on one side.

    Flip

    2 minutes on other side

    8 minutes in the oven.

    Will update as I tweak the recipe.

    Adjust for size of steak. 3/3/10 with 1+ pound steaks were medium-well.

    Thursday, September 03, 2015

    Export SVN externals into a file called externals.prop

     svn propget svn:externals > externals.prop


    Import SVN externals from a file called externals.prop

    svn propset svn:externals --file ./externals.prop .

    Tuesday, August 25, 2015

    Enable Remote Desktop from command line or SSH

    Found this recently, and its very useful if you have SSH/CMD access to a box, but forgot to enable Remote Desktop.

    C:\>netsh firewall set service remoteadmin enable
    C:\>netsh firewall set service remotedesktop enable

    Tested in Windows 7, but resulted in a deprecated message. Still worked though, so probably ok for now. Windows 10 users might need something else.

    Original post:

    http://superuser.com/questions/181242/enabling-rdp-or-installing-a-vnc-server-on-windows-7-from-the-command-line

    Friday, May 08, 2015