Showing posts with label Linux. Show all posts
Showing posts with label Linux. Show all posts

md5 checksum for multiple files

create the checksum and verify them.
Example: file1.txt file2.txt file3.txt

# Linux
anthony.chin@jump.noc:~$ touch file{1,2,3}.txt
anthony.chin@jump.noc:~$ ll
total 129532
-rw-r--r-- 1 anthony.chin anthony.chin         0 Feb 10 07:06 file1.txt
-rw-r--r-- 1 anthony.chin anthony.chin         0 Feb 10 07:06 file2.txt
-rw-r--r-- 1 anthony.chin anthony.chin         0 Feb 10 07:06 file3.txt
anthony.chin@jump.noc:~$ for i in `ls file?.txt`; do md5sum $i > $i.md5; done
anthony.chin@jump.noc:~$ ll
total 129544
-rw-r--r-- 1 anthony.chin anthony.chin         0 Feb 10 07:06 file1.txt
-rw-r--r-- 1 anthony.chin anthony.chin        44 Feb 10 07:07 file1.txt.md5
-rw-r--r-- 1 anthony.chin anthony.chin         0 Feb 10 07:06 file2.txt
-rw-r--r-- 1 anthony.chin anthony.chin        44 Feb 10 07:07 file2.txt.md5
-rw-r--r-- 1 anthony.chin anthony.chin         0 Feb 10 07:06 file3.txt
-rw-r--r-- 1 anthony.chin anthony.chin        44 Feb 10 07:07 file3.txt.md5
anthony.chin@jump.noc:~$ md5sum -c *.md5
file1.txt: OK
file2.txt: OK
file3.txt: OK

# OSX
$ brew install cfv

$ touch file{1,2,3}.txt
$ ll
total 0
-rw-r--r--  1 anthony.chin  admin  0 Feb 10 15:12 file1.txt
-rw-r--r--  1 anthony.chin  admin  0 Feb 10 15:12 file2.txt
-rw-r--r--  1 anthony.chin  admin  0 Feb 10 15:12 file3.txt

$ for i in `ls file?.txt`; do md5 $i > $i.md5; done
$ ll
total 24
-rw-r--r--  1 anthony.chin  admin   0 Feb 10 15:12 file1.txt
-rw-r--r--  1 anthony.chin  admin  51 Feb 10 15:13 file1.txt.md5
-rw-r--r--  1 anthony.chin  admin   0 Feb 10 15:12 file2.txt
-rw-r--r--  1 anthony.chin  admin  51 Feb 10 15:13 file2.txt.md5
-rw-r--r--  1 anthony.chin  admin   0 Feb 10 15:12 file3.txt
-rw-r--r--  1 anthony.chin  admin  51 Feb 10 15:13 file3.txt.md5$ cfv *.txt
file1.txt.md5: 1 files, 1 OK.  0.000 seconds, 11.1K/s
file2.txt.md5: 1 files, 1 OK.  0.000 seconds, 18.8K/s
file3.txt.md5: 1 files, 1 OK.  0.000 seconds, 14.4K/s
3 files, 3 OK.  0.001 seconds, 7.6K/s

# if the md5 was incorrect:
$ vi file3.txt.md5
$ cfv *.txt
file1.txt.md5: 1 files, 1 OK.  0.000 seconds, 11.3K/s
file2.txt.md5: 1 files, 1 OK.  0.000 seconds, 17.6K/s
file3.txt : crc does not match (b026324c6904b2a9cb4b88d6d61c81d2!=b026324c6904b2a9cb4b88d6d61c81d1)
file3.txt.md5: 1 files, 0 OK, 1 badcrc.  0.000 seconds, 19.4K/s
3 files, 2 OK, 1 badcrc.  0.001 seconds, 7.8K/s


How to check Word Wide Node (WWN) for Fiber Channel HBA card?

To find the Fibre Channel addresses of the HBAs on the machine, run the following:

# systool -c fc_host -v
   
    (output trimmed for clarity)
   
      Class Device path = "/sys/class/fc_host/host8"  (kernel assigned host name/number)
        node_name           = "0x20000024ff2254bf"    (hba wwnn       )
        port_name           = "0x21000024ff2254bf"    (hba wwpn       )
        port_id             = "0x030b00"              (fabric port id assigned by the san to this HBA)

      Class Device path = "/sys/class/fc_host/host9"
        node_name           = "0x20000024ff2254be"
        port_name           = "0x21000024ff2254be"
        port_id             = "0x010c00"

or alternatively

# ls -1c /sys/class/fc_host/host*/*_name 2> /dev/null | xargs -I {} grep -H -v "ZzZz" {} | sort
    /sys/class/fc_host/host8/fabric_name:0x100000053367f20d
    /sys/class/fc_host/host8/node_name:0x20000024ff2254bf
    /sys/class/fc_host/host8/port_name:0x21000024ff2254bf
    /sys/class/fc_host/host8/symbolic_name:QLE2562 FW:v5.06.02 DVR:v8.04.00.04.06.3-k
    /sys/class/fc_host/host9/fabric_name:0x100000606951c582
    /sys/class/fc_host/host9/node_name:0x20000024ff2254be
    /sys/class/fc_host/host9/port_name:0x21000024ff2254be
    /sys/class/fc_host/host9/symbolic_name:QLE2562 FW:v5.06.02 DVR:v8.04.00.04.06.3-k


    # ls -1c /sys/class/fc_host/host*/port_id 2> /dev/null | xargs -I {} grep -H -v "ZzZz" {} | sort
    /sys/class/fc_host/host8/port_id:0x030b00
    /sys/class/fc_host/host9/port_id:0x010c00

installing salt-stack: salt-master and salt-minion

Installation

salt master

$ curl -L https://bootstrap.saltstack.com -o install_salt.sh
$ sudo sh install_salt.sh -P -M

Salt master can manage itself, so a Salt minion is installed along with the Salt master.
If you do not want to install the minion, also pass the -N option.
$ sudo sh install_salt.sh -P -M -N

salt minion

-       Default minions will use "salt" as the salt master hostname. you can edit this in the minion's /etc/salt/minions "master: x.x.x.x"
-       when minion first startup, it will look for "salt" and try to put its key to master
$ curl -L https://bootstrap.saltstack.com -o install_salt.sh
$ sudo sh install_salt.sh -P

accepting keys

You may manually accept the minion key from salt master or you may preseed minion with a key generated from salt master
The key name should always match the minion ID which later on you can find from the minion's /etc/salt/minion_id

From salt master:
$ salt-key --gen-keys=minion1

2 files will be generated:
copy and rename the .pub file into /etc/salt/pki/minions/ folder with the minion ID
$ cp minion.pub /etc/salt/pki/minions/minion1

copy these 2 files to minion before starting the salt-minion service
$ scp minion1.pem minion1.pub root@minion1:/etc/salt/pki/minion/

Start | Stop

$ systemctl start salt-minion
$ systemctl start salt-master