Search This Blog

2017-08-15

oracle virtual box cheat sheet

#file: docs/cheat-sheets/vbox/vbox-cheat-sheet.sh
 
# get the uuid's of your vms
VBoxManage list vms | column -t | sort
 
# how-to use host's vpn with host-only network on nic1 and nat on nic2 confs
VBoxManage modifyvm 8e2562ee-61e3-48da-9381-092fc1ab909c --natdnsproxy1 on
VBoxManage modifyvm 8e2562ee-61e3-48da-9381-092fc1ab909c --natdnshostresolver1 on
 
# how-to start a vm without ui  
VBoxManage startvm "vm-name" --type headless
 
# how-to start a vm with detachable ui ( no 3D acceleration )
VBoxManage startvm "vm-name" --type separate
 
# how-to save the current state of the vm 
VBoxManage controlvm "vm_name"  savestate
 
# how-to start a vm with ui  
VBoxManage startvm "vm-name"
 
# how-to shutdown a vm
VBoxManage controlvm "vm_name" poweroff
 
# add port forwarding from host to guest
VBoxManage modifyvm "vm_name" --natpf1 "5001,tcp,,5001,,5001"
 
#how-to check network settings 
VBoxManage showvminfo "vm_name" | grep NIC
 
# in bash how-to export all myy Virtual box vms in Windows in the current dir
while read -r vms ; do echo VBoxManage export "$vms" -o "$vms".ova ; done < <(VBoxManage list vms|cut -d'"' -f2)
 
#in cmd how-to export all myy Virtual box vms in Windows in the current dir in cmd
for /f "tokens=1 delims= " %i in ('VBoxManage list vms') do VBoxManage export %i -o %i.ova
 
#how-to resize the virtual disk
VBoxManage modifyhd "C:\Users\ysg\VirtualBox VMs\doc-pub-host\doc-pub-host-disk1.vmdk" --resize 20000
 
#you reserved too little space during installation ?! No problem resize the virtual disk :
VBoxManage clonehd "C:\Users\ysg\VirtualBox VMs\doc-pub-host\doc-pub-host-disk1.vmdk" "C:\Users\ysg\VirtualBox VMs\doc-pub-host\doc-pub-host-disk.vdi" --format vdi
VBoxManage modifyhd "C:\Users\ysg\VirtualBox VMs\doc-pub-host\doc-pub-host-disk.vdi" --resize 20480
 
VBoxManage guestproperty enumerate doc-pub-host | grep -i Net | grep -i ip
 
 
 
# nok Add an IDE controller with a DVD drive attached, and the install ISO inserted into the drive:
VBoxManage storagectl lp_host --name "IDE" --add ide
# ok 
VBoxManage storageattach lp_host --storagectl "IDE" --port 0 --device 0 --type dvddrive --medium "C:\var\pckgs\gnu\Ubuntu\ubuntu-16.04.1-desktop-amd64.iso"
 
VBoxManage modifyvm %VM% --ioapic on
VBoxManage modifyvm %VM% --boot1 dvd --boot2 disk --boot3 none --boot4 none
VBoxManage modifyvm %VM% --memory 1024 --vram 128
VBoxManage modifyvm %VM% --nic1 bridged --bridgeadapter1 e1000g0
 
 
 
 
 
 
 
#
# ---------------------------------------------------------
#    VersionHistory: 
# ---------------------------------------------------------
# export version=1.1.0
# ---------------------------------------------------------
# 1.1.0 -- 2016-12-01 08:42:59 -- ysg -- 
# 1.0.0 -- 2016-08-16 22:40:16 -- ysg -- 
# ---------------------------------------------------------
 
#eof file: docs/cheat-sheets/vbox/vbox-cheat-sheet.sh

2017-08-08

aws cli cheat sheet ( revised )

 
# ok
# how-to loop trough all your load balancer names 
while read -r lb ; do \
    echo -e "\n\n start lb: $lb " ; \
    aws elb add-tags --load-balancer-name $lb --tags \
    "Key=Team,Value=odinId-834" \
    "Key=ODINAPPID_ENV_ROLE_STACK,Value=834_dev_app_nps" \
    --profile dev; \
    echo " stop  lb: $lb" ; \
done < <(aws elb describe-load-balancers --query \
'LoadBalancerDescriptions[].LoadBalancerName' \
--profile dev|perl -nle 's/\s+/\n/g;print')
 
 
 
# how-to loop trough all your lb instances 
while read -r lb ; do \
    echo -e "\n\n start lb: $lb " ; \
    echo run cmd on lb: $lb ; \
    echo " stop  lb: $lb" ; \
done < <(aws elb describe-load-balancers --query \
'LoadBalancerDescriptions[].Instances[].InstanceId' \
--profile dev|perl -nle 's/\s+/\n/g;print')
 
 
 
# how-to query all the instance id's in <<env>>
while read -r i ; do echo instance-id: $i; done < <(aws ec2 describe-instances --query "Reservations[].Instances[].InstanceId" --profile dev|perl -nl -e 's/\s+/\n/g;print')
 
# how-to list the tags in the instances
for i in $(aws ec2 describe-instances --query "Reservations[].Instances[].InstanceId" --profile prd) ; do echo instance $i tags : ; aws ec2 describe-tags --filters "Name=resource-id,Values=$i" --profile prd --output table ; done ;
 
# how-to add tags to all instances in env
for i in $(aws ec2 describe-instances --query "Reservations[].Instances[].InstanceId" --profile dev) ; do echo -e "instance $i :\n" ; aws ec2 create-tags --resources $i --tags "Key=TheKey,Value=TheValue" --profile dev ; echo -e "stop  instance : $i \n" ; done ;
 
 
# add the ODINAPPID_ENV_ROLE_STACK tag to all the istances in dev 
for i in $(aws ec2 describe-instances --query "Reservations[].Instances[].InstanceId" --profile dev) ; do echo -e "instance $i :\n" ; aws ec2 create-tags --resources $i --tags "Key=ODINAPPID_ENV_ROLE_STACK,Value=834_dev_app_nps" --profile dev ; echo -e "stop  instance : $i \n" ; done ;
 
# add the Team tag to all the instances in prd
for i in $(aws ec2 describe-instances --query "Reservations[].Instances[].InstanceId" --profile prd) ; do echo -e "instance $i :\n" ; aws ec2 create-tags --resources $i --tags "Key=Team,Value=odinId-834" --profile prd ; echo -e "stop  instance : $i \n" ; done ;
 
 
 
for i in $(aws ec2 describe-instances --query \
"Reservations[].Instances[].InstanceId" --profile prd) ; do \
echo instance $i tags : ; aws ec2 describe-tags \
--filters "Name=resource-id,Values=$i" \
--profile prd --output table | egrep -i 'team' ; \
done
 
 
while read -r i ; do 
    echo instance-id: $i ; 
done < <(aws ec2 describe-instances --query \
"Reservations[].Instances[].InstanceId" --profile dev) ;

aws cli cheat sheet

# file: docs/cheat-sheets/aws/aws-cli-cheat-sheet.sh
 
# aws ec2
aws ec2 describe-instances --profile prd
aws ec2 describe-instances --region us-east-1 --output=text --profile rnd | grep -i INSTANCES
aws ec2 describe-dhcp-options --region us-east-1 --output=text --profile rnd
aws ec2 describe-internet-gateways --output=text --profile prd
aws ec2 monitor-instances --instance-ids i-033b311170f00db51 --region us-east-1 --output=text --profile rnd
aws ec2 describe-vpcs --profile prd
 
 
# aws elb
aws elb describe-load-balancers  --profile prd | grep -i listener
 
 
# aws route53 
aws route53 list-resource-record-sets --hosted-zone-id  "$hosted_zone_id" --profile prd
 
 
# test the dns answer in the aws route53
for record_type in $record_types ; do \
 aws route53  test-dns-answer \
  --hosted-zone-id "$hosted_zone_id" \
  --record-name "$record_name" \
  --record-type "$record_type" \
  --resolver-ip "$resolver_ip" \
  --profile "prd" ;
done
 
 
# aws iam
aws iam list-server-certificates --profile prd
 
aws iam upload-server-certificate \
    --server-certificate-name "$server_certificate_name" \
    --certificate-body file://"$certificate_body_file" \ # BEGIN CERTIFICATE -> END CERTIFICATE
    --certificate-chain file://"$cerftificate_chain_file" \ 
    --private-key file://"$private_key_file" \ # rsa start -> rsa stop
    --profile prd
 
# install aws cli via python pip package manager
curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" 
sudo python get-pip.py
sudo pip install --upgrade awscli
sudo apt-get install python-pip
sudo pip install awscli
 
# or via os package manager 
# install the aws-cli package
sudo apt-get install -y awscli
sudo yum install -y awscli
 
# aws cloudformation 
aws cloudformation describe-stacks --output=table --profile prd
 
 
# in aws admin console :
# Services => iam => users => <<your_username>> => Security Credentials => Access Keys
# configure the aws cli
cat << "EOF" > ~/.aws/credentials
[dev]
aws_access_key_id = <<your_aws_access_key_id_in_the_dev_environment>>
aws_secret_access_key = <<your_aws_secret_access_key_in_dev_env>>
[prd]
aws_access_key_id = <<your_aws_access_key_id_in_the_prd_environment>>
aws_secret_access_key = <<your_aws_secret_access_key_in_prd_env>>
[default]
aws_access_key_id = <<your_aws_access_key_id_in_the_dev_environment>>
aws_secret_access_key = <<your_aws_secret_access_key_in_dev_env>>
EOF
 
# set-up the ~/.boto confs
cat << "EOF" > ~/.boto
[profile dev]
aws_access_key_id = <<your_aws_access_key_id_in_the_dev_environment>>
aws_secret_access_key = <<your_aws_secret_access_key_in_dev_env>>
[profile prd]
aws_access_key_id = <<your_aws_access_key_id_in_the_prd_environment>>
aws_secret_access_key = <<your_aws_secret_access_key_in_prd_env>>
[profile default]
aws_access_key_id = <<your_aws_access_key_id>>
aws_secret_access_key = <<your_aws_secret_access_key_in_dev_env>>
EOF
 
 
# how-to configure your default regions and formats
# src: http://docs.aws.amazon.com/cli/latest/topic/config-vars.html
cat << "EOF" > ~/.aws/config
 
[profile rnd]
output = text
region = us-east-1
[profile prd]
output = text
region = us-east-1
[default]
output = text
region = Global
 
EOF 
 
 
# eof file: docs/cheat-sheets/aws/aws-cli-cheat-sheet.sh

2017-08-07

openssl + aws lb cheat sheet

# openssl + aws iam cheat sheet
# src: https://docs.aws.amazon.com/acm/latest/userguide/import-certificate-prerequisites.html
The certificate, private key, and certificate chain must all be PEM-encoded. PEM stands for Privacy Enhanced Mail but was never widely adopted an Internet mail standard. Instead, the PEM format is often used to represent a certificate or certificate request. It is base64-encoded and placed between a -----BEGIN CERTIFICATE----- header and an -----END CERTIFICATE----- footer
 
# download the sq.crt VerisignRoot CA certtificate
curl -O http://sg.symcb.com/sg.crt
 
# ok
# convert the root certificate to pem format
openssl x509 -text -inform DER -in sg.crt > sg.crt.pem
 
 
# OK
aws iam upload-server-certificate \
    --server-certificate-name <<service>>-<<app>>-<<date-valid-to>>-<<Issuer-CA>> \
    --certificate-body file://body.pem \ # BEGIN CERTIFICATE -> END CERTIFICATE
    --certificate-chain file://sg.crt.pem \ 
    --private-key file://private-key.key \ # rsa start -> rsa stop
    --profile prd
 
 
# ok
# create pem files from the cert files
while read -r f; do openssl x509 -in $f -text > $f.pem     ; echo done with $f ; done < <(find . -type f -name "*.cert" |sort)
 
# ok
# check the private keys ( *.key ) files
while read -r f ; do echo '### START '$f | less; openssl rsa -in $f -check 2>&1 | less ; echo '### STOP '$f | less ; done < <(find . -name '*.key')
 
# ok
# check the cert ( *.cert ) files
while read -r f ; do echo '### START '$f | less; openssl x509 -in $f -text -noout 2>&1 | less ; echo '### STOP '$f | less ; done < <(find . -name '*.cert')
 
# ok
# create the cert ( *.cert ) files
while read -r f ; do echo '### START '$f | less; openssl x509 -in $f -text -noout > "$f"".pem" 2>&1 | less ; echo '### STOP '$f | less ; done < <(find . -name '*.cert')
 
 
# ok 
# check the private key file
openssl rsa -in key-file.key -check
    
# src: https://www.sslshopper.com/article-most-common-openssl-commands.html
 
# Generate a new private key and Certificate Signing Request
openssl req -out CSR.csr -new -newkey rsa:2048 -nodes -keyout privateKey.key
 
# Generate a self-signed certificate 
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt
 
# Generate a certificate signing request (CSR) for an existing private key
openssl req -out CSR.csr -key privateKey.key -new
 
 
# Generate a certificate signing request based on an existing certificate
openssl x509 -x509toreq -in certificate.crt -out CSR.csr -signkey privateKey.key
 
 
# Remove a passphrase from a private key
openssl rsa -in privateKey.pem -out newPrivateKey.pem
 
 
# Check a Certificate Signing Request (CSR)
openssl req -text -noout -verify -in CSR.csr
 
# Check a private key
openssl rsa -in privateKey.key -check
 
 
# Check a certificate
openssl x509 -in certificate.crt -text -noout

2017-08-06

VT-x is not available (VERR_VMX_NO_VMX) code E_FAIL error after Windows update or Why Microsoft is still evil

Once and a while after a Windows Update MSFT keeps pushing the Hyper-V features on ... even after the users have explicitly removed them beforehand ... This is evil !!! from this stackoverflow quesstion

2017-08-02

linux cheat sheet ( revised )

# file:linux-cheat-sheet.sh v.1.9.5 docs at the end 


# dns troubleshooting
dig host-dns.name
# how-many Answers !? 

host host-dns.name
nslookup
# type g=max
# type host-dns.name

# how interfaces on host 
ip link show

# trace tcp with tcpdump
sudo tcpdump -i enp0s3 -l > dat & tail -f dat

# trace ssl trafic with sssldump
ssldump -k /etc/stealmykeys/test.key -i eth0 -dnq host 10.41.12.50

# list all the tmux sessions
tmux ls

# create a new tmux session
tmux new -s "mngmt-1"


#find in files with colors
export to_srch=perl
find . -type f -exec grep -nHi --color=always -R $to_srch {} \; | less -R
find . -name '*.pm' | xargs -P 5 grep -nHP --color=always -P $to_srch | less -R

# how-to search for cygwin packages having the "perl" string in their names, requires wget and perl
wget -qO- "https://cygwin.com/cgi-bin2/package-grep.cgi?grep=$to_srch&arch=x86_64" | \
perl -l -ne 'm!(.*?)<\/a>\s+\-(.*?)\:(.*?)<\/li>!;print $2'

# install multiple packages at once, note the
setup-x86_64.exe -q -s http://cygwin.mirror.constant.com -P "inetutils,wget,open-ssh,curl,grep,egrep,git,vim,zip,unzip,tmux"

# and test 
for bin in `echo ftp telnet wget ssh sftp curl grep egrep`; do echo "$bin path:"; which $bin ;done ; 

# while loop
find `pwd` | { while read -r file ; do echo "$file" ; done ; }

# fork processes with while
c=0
cat "$list_file" | { while read -r jira_issue ; do c=$((c+1)) ; test $c -eq 5 && sleep $c && export c=0 ; \
( sh /maintenance/ip/sfw/sh/jira --action progressIssue --issue $jira_issue --step 41 )& done }

#-- start - search and replace recursively in both files and file paths
to_srch='what_to_srch'
to_repl='what_to_replace'

#-- srch and repl %var_id% with var_id_val in dirs in $component_name_dir_tmp
find "$dir" -type d |\
perl -nle '$o=$_;s#'"$to_srch"'#'"$to_repl"'#g;$n=$_;`mkdir -p $n` ;'
find "$dir" -type f |\
perl -nle '$o=$_;s#'"$to_srch"'#'"$to_repl"'#g;$n=$_;rename($o,$n) unless -e $n ;'

#-- stop  - search and replace recursively in both files and file paths

#-- start - srch and repl %var_id% with var_id_val in files in $component_name_dir_tmp
find "$dir" -type f -exec perl -pi -e "s#$to_srch#$to_repl#g" {} \;
find "$dir/" -type f -name '*.bak' | xargs rm -f
#-- stop  - srch and repl %var_id% with var_id_val in files in $component_name_dir_tmp


# get a nice prompt 
3
export PS1="\h [\d \t] [\w] $ \n\n  "

# nice listing
find . -type f -exec stat -c '%n %y' {} \; | sort -n | less
# check permissions effectively 
find . -type f -exec stat -c "%U:%G %a %n" {} \; | less


# aliases
# show dirs with nice time newest modified on top 
alias ll='ls -alrt --time-style=long-iso'
alias tarx='tar -zxvf'
alias tarc='tar -zcvf'


# find the only the uniq file names of specific file type 
find `pwd` -name '*.xml' | perl -pe 's/(.*)(\\|\/)(.*)/$3/;' | sort  | uniq -u

# how-to find in files - e.g. search by a perl regex in files and redirect the output to vim 
find `pwd` -name '*.pm' -exec grep -inHP -A 1 'sub [a-zA-Z0-9]*\s+\{' {} \; | vim -

# how-to search for a regex and build the ready open vim to found line cmds
find $dir -name '*.ext' -exec grep -nHP 'regex' {} \; | perl -ne 'm/^(.*):(\d{1,10})(.*)/g;print "vim ". "+$2 " . "$1 \n"'


# go the previous dir you where 
cd -
pushd .; popd

#how-to check opened ports with nmap
nmap -sT -O localhost

# get selinux security context
ls -al --lcontext $dir

# change the selinux security context 
chcon -vR -u system_u -r object_r -t httpd_sys_content_t $dir

# use rsync to preserve permissions
rsync -v -X -r -E -o -g --perms --acls $src_dir $tgt_dir
rsync -v -r --partial --progress --human-readable --stats $src_dir $tgt_dir
rsync -v -r --partial --progress --human-readable --stats $src_dir/$f $tgt_dir/$f

while read line_with_spaces ; do sh /path/to/script.sh "$line_with_spaces" ; done < $file_with_lines_with_spaces

export file_name_to_filter=infa-reporter
stat -c "%n %y" *.zip | perl -ne 'm/^(.*?) (.*)/g; printf "%-70s %-50s \n" , "$1" , "$2"' | sort -r -k 2 | grep -i $file_name_to_filter
stat -c "%y %n" *.zip | sort -nr | less


# The ultimate "find in files"
find /etc/httpd/ -type f -print0 | xargs --null grep -nHP 'StartServers\s+\d' | less
# for loop
for file in `find / -type f \( -name "*.pl" -or -name "*.pm" \) -exec file {} \; | grep text | perl -nle 'split /:/;print $_[0]' `; do grep -i --color -nH 'string_to_search'  $file ; done ;

#  or even faster , be aware of funny file names xargs -0
find / -name '*bak' -print0 | xargs --null grep -nPH 'curl'
 
# find and replace recursively
find . -name '*.html' -print0 | xargs -0 perl -pi -e 's/foo/bar/g'

# how-to check disk space
find $dir -maxdepth 2 -type d -exec du -B M --max-depth=1 {} \; | sort -nr | less

# find all the files greather than 100 MB , sort them by the size and print their sizes 
find $dir -type f -size +2M -exec du -B M {} \; | sort -nr | less 
 
du -B M --max-depth 3 $dir | perl -nle 's#\s+# #g;print' | perl -ne 'm/^(.*?) (.*)/g; printf "%10s %-50s \n" , "$1" , "$2"' | sort -nr -k1 | less

# how-to search bunch of tar.gz files 
cmd="zgrep $StringToFind '{}' >> $FileToOutput"
find ${DirFindRoot} -type f  -name ${nameFilter} -print0 | xargs -0 -I '{}' sh -c "$cmd"

# disk usage of users under the /home directory in MB
export dir=/data/reseller/tmp/;
clear;du -all --block-size=1M $dir --max-depth=2 | sort -n | perl -ne '@a=split /\s+/g;$a[0]=~s/(?<=\d)(?=(?:\d\d\d)+\b)/ /g;printf "%15s %10s",$a[0],"$a[1]  \n" '

# show in megs and sort each folder
find $dir -type d -exec du --summarize -B M {} \; | sort -nr | perl -ne '@a=split /\s+/g;$a[0]=~s/(?<=\d)(?=(?:\d\d\d)+\b)/ /g;printf "%15d %10s",$a[0],"$a[1]  \n" '| less

tcpdump dst 10.168.28.22 and tcp port 22
tcpdump dst 1.2.81.2.8.212 
 
# record the current session via script
mkdir ~/scriptlogs
script -a ~/data/log/script/`date +%Y%m%d%H%M%S`_script.log
  
#/usr/bin is for normal user executables, /usr/sbin is for superuser executables, /usr/sfw is for external software (like gnu one), but provided with bundle of OS, /usr/ccs is for development utilities, usually not need for daily tasks like make, lex, yacc, sccs
 
# take the last 5 commands for faster execution to the temp execution script
tail -n 5 /root/.bash_history >> /var/run.sh
 
# I saw the command cd /to/some/suching/dir/which/was/very/long/to/type
echo so I redid it and saved my fingers
!345
  
#how-to check my history without the line numbers  
history | cut -c 8- | grep env
 
 
# how to deal with command outputs
command | filtercommand > command_output.txt 2>errors_from_command.txt
  
 
#  find the files having os somewhere in their names and only those having linux
find . -name '*os*' | grep linux | less
 
# find all xml type of files and display only the rows having wordToFindInRow
find . -name '*.xml' -exec cat {} \;| grep wordToFindInRow | less
 
 
# START === bash shortcuts 
# Go to the beginning of the line you are currently typing on
Ctrl + A 
# Go to the end of the line you are currently typing on
Ctrl + E
# move a word forward 
Alt + F
# move a word backwards
Alt + B
# STOP === bash shortcuts 
 
# how-to mount an usb stick
# remember to change the path other wise you will get the device is busy errror
mkdir /mnt/usbflash
mount /dev/sdb1 -t vfat /mnt/usbflash

mount /vagrant -t /mnt/hgfs/vagrant
mount -t vmhgfs .host:/mnt/hgfs/vagrant /vagrant 

umount /mnt/usbflash

#display the first 20 lines of the file
head -n 20 too-long-file 
 
#start e-mail 
# how to restart a service initiated at startup
/etc/rc.d/init.d/sendmail start | stop | status | restart

# how-to send via e-mails the files of a dir with mailx
export dir=`pwd`
export attachments=$(find $dir -type f| perl -ne 'print "-a $_"'| xargs)
echo $attachments | mailx $attachments -s "$dir files" $MyEmail

mailx $(find $dir -type f| perl -ne 'print "-a $_"'| xargs) -s "$fir files" $MyEmail < `echo $(find $dir -type f| perl -ne 'print "-a $_"'| xargs)`


#stop e-mail
 
# see all the rules associated with the firewall
iptables -L -n -v --line-numbers
 
gunzip *file.zip

# To start remote session click on the putty screen , configure putty
# settings to pull full screen with alt + Enter
 
# right click on the title bar , settings , change the font , copy
# paste from and to the terminal window text
 
# how to ensure the sshd daemon is running
ps -ef | grep sshd

 
# how to kill process interactively
killall -v -i sshd
 
 
# the most efficent way to search your history is to hit Ctrl R and
#type the start of the command. It will autocomplete as soon as theres
#a match to a history entry, then you just hit enter. If you want to
#complete the command (add to it ) use the right arrow to
#escape from the quick search box ...
 
 
#How to see better which file were opened , which directories were visited
 
#type always the fullpath after the vi - use the $PWD env variable to
#open files in the current directory , thus after opening the file
#after:
 
#vi /$PWD , press tab to complete the name of the current directory ,
#type the name of the file. THUS AFTER RUNNING
history | grep vim
 
#of course the same could be seen from the /home/username/.viinfo file /files
 
#where to set the colors for the terminal (if you are lucky to have one
# with colors ; )
 
/etc/DIR_COLORS
 
open a file containing "sh" in its name bellow the "/usr/lib" directory
 
:r !find /usr/lib -name *sh*
 
go over the file and gf
 
#which version of Linux I am using
uname -a
 
#How to copy paste text in the putty window from client to server -

#click the right button of your pointing device
 
#How to copy paste text from the putty window from server to client -
#right-click the window title and select copy all to Clipboard.
 
#To restart a service
service sshd restart
#  
service --status-all --- show the status of all services
 
 
# change the owneership of the directory recursively
chown -vR user$group $dir


# perform action recursively on a set of files
 
find . -name '*.pl' -exec perl -wc {} \;
 

for file in `find . -type f`;do echo cp $file ./backups/; done;
for file in `ls *.docx -1`;do echo cp $file ./backups/$file.`date +%Y%m%d%H%M%S`.docx;done;

 
# make Bash append rather than overwrite the history on disk:
shopt -s histappend
 
# henever displaying the prompt, write the previous line to disk:
PROMPT_COMMAND='history -a'
 
 
# than run the script
#how-to replace single char in file
tr '\t' ',' < FileWithTabs > fileWithCommas
 
# Allow access to the box from only one ip address
 

# create a backup file based on the timestamp on bash
cp -v fileName.ext fileName.ext.`date +%Y%m%d_%H%M%S`.bak

#check disk space left
df -a -h | tail -n +2   | perl -nle 'm/(.*)\s+(\d{1,2}%\s+(.*))/g;printf "%-20s %-30s %-90s \n","$2",$3,$1' | sort -nr | less
df -a -B M | column -t | sort -nr -k 5
df  -h ***
   
# how-to get running processes 
ps -ef --forest 

# how-to kill misbehaving process ... you will need to adjust the -f 2 part 
# depending on the output of the ps -ef command above 
for pid in $(ps -ef | grep procToFind | perl -ne 's/\s+/ /g;print $_ . "\n";' | cut -d ' ' -f 2) ; do echo kill -9 $pid ; done ;
for pid in $(ps -ef | grep chrome | perl -ne 's/\s+/ /g;print $_ . "\n";' | cut -d ' ' -f 2) ; do echo kill -9 $pid ; done ;


#how-to create relative file paths tar package recursively fromm a dir
cd $RootDirToStartRelativePathsFrom
tar -cvzpf $pckg_to_create.tar .
# exctract tar file into cd  
tar -xvf $pck_to_exctract_to_cwd.tar

#how-to create tar archieve
tar cvf $archive_name.tar $dir/

#how-to unpack tar file
tar xvf $file

#how-to unpack gz archive
gzip -cd $file | tar -xvf -


# print line number 52
sed -n '52p' # method 1
sed '52!d' # method 2
sed '52q;d' # method 3, efficient on large files



# START === create symlink
export link_path=/opt/csitea/isg-pub/isg-pub.0.9.7.tst.ysg/doc_pub/public/img/apps/futu_lp_en
export target_path=/opt/futurice/futu-lp/futu-lp.1.0.1.prd.ysg/doc_pub/public/img/
mkdir -p `dirname $link_path`
unlink $link_path
ln -s "$target_path" "$link_path"
ls -la $link_path;
# STOP === create symlink



export link_path=/var/www/html/core_dw
export target_path=/var/aktia/core-dw/core-dw.0.8.6.dev.aktia/docs/site
mkdir -p `dirname $link_path`
unlink $link_path
ln -s "$target_path" "$link_path"
ls -la $link_path;



# START === user management
#how-to add a linux group
export group=futu
export gid=10002
sudo groupadd -g "$gid" "$group"
sudo cat /etc/group | grep --color "$group"

export user=ysg
export uid=10001
export home_dir=/home/$user
export desc="the user of the gogo app"
#how-to add an user
useradd --uid "$uid" --home-dir "$home_dir" --gid "$group" \
--create-home --shell /bin/bash "$user" \
--comment "$desc"
cat /etc/passwd | grep --color "$user"


# modify a user
usermod -a -G $group $user

# change the password for the specified user (own password)
passwd $user 
#how-to forces to change password when logging in for the first time
passwd -f login 
#change user pass to expire never 
chage -I -1 -m 0 -M 99999 -E -1 $user
# and check results 
chage -l $user


#Ei should not return anything !!!
passwd -s -a | grep NP (=No Password)

#delete an user
userdel $user
#administer the /etc/group file
gpasswd: 
# START === user management


#how-to extracts rpm packages contents
export ins=foo-bar.rpm
rpm2cpio $ins | cpio -id
#how-to extract *.tar.gz 
gzip -dc *.tar.gz | tar xvf -
cd foo-bar-dir

#--- show all installed packages
rpm -dev
# search for package name
rpm -qa | grep --color $package


#how-to build binaries as a non-root 
./configure --prefix=$HOME && make && make install

#exctract a single file:
gzip -dc fileName.tar.gz | tar -xvf - $file

find . -name '*.log' -print | zip cipdq`date +%Y%m%d%H%M%S` -@
# find several types of files 
find . -type f \( -name "*.pl" -or -name "*.pm" \)

find / -type f | xargs grep -nH 'curl'

# print the word to find + the next 3 lines
grep -A 3 -i "theWordToFind" demo_text


find . -type f -name '*.sh' -print -exec grep -n gpg {} \;
# create a list of files
find . -print0 | xargs -r0 echo "$@"

#how-to encrypt a file
gpg -c $file
#how-to decrypt a file
gpg $file

# where am I
uname -a ; 
# who am I 
id ; 
# when this is happening 
date "+%Y.%m.%d %H:%M:%S" ; 

# reboot ... !!! BOOM BOOM BOOM !!!
shutdown -r now 

# shutdown the whole system 
shutdown -f -s 00
 
#how-to kill a process 
ps -aux | grep $proc_to_find
pidof $prod_to_find
kill -9 $proc_to_find

# which processes are listening on my system
netstat --tcp --listening --programs
netstat --tcp
netstat --route


# STOP === system monitoging commands
# get system info
cat /proc/cpuinfo | less
cat /proc/meminfo | sort -nr -k 2 \
| perl -ne 'split /\s+/;printf ("%-15s %20d MB \n" , "$_[0]" , ($_[1]/1024))'
fdisk -l


# check memory usage
egrep --color 'Mem|Cache|Swap' /proc/meminfo

# show the top processes
top
# now press Shift + o, and choose the field to sort by 

# running processes status 
ps -auxw | less 
ps -ef | less 
#List all currently loaded kernel modules
lsmod | less 
#Displays the system's current runlevel.
/sbin/runlevel
# get the Processes attached to open files or open network ports:
lsoff | less 
# monitor the virtual memory 
vmstat 
# show the free memory
free -m


#Display/examine memory map and libraries (so). Usage: pmap pid
ps -aux | grep $proc_name_to_pmap
pmap   $prod_id_to_pmap
# STOP === system monitoging commands

#how-to sort output by a delimited by single delimiter column 
# in this example the - char is used for delimiter , the output is 
# by their sending sequence , use proper file naming convention files 
# ls -1 gives us:
# fileBeginningTillFirstDelimiter-TheColumnToSortBy-TheRestFromTheFileNameDelimiter
ls -1 | awk -F1 'BEGIN {FS="-"};{print $2 "¤" $1 "-" $2 "-" $3 }' | sort -nr | cut -d ¤ -f 2,5 
# the same approach with perl
ls -1 | perl -p -i -e 's/^([^\-]*)(\-)([^\-]*)(\-)([^\-]*)/$3¤$1.2.8$4$5/g' | sort -nr | cut -d ¤ -f 2,5  

# how-to use sftp with remoteUserName having publicIdentity of PublicIdentityUserName
sftp -v -o "IdentityFile /var/www/.ssh-id/PublicIdentityUserName" \
-o "UserKnownHostsFile /var/www/.ssh-id/known_hosts" remoteUserName@ServerHostNameOrIpd


ssh -v -o ServerAliveInterval 300 -o ServerAliveCountMax 1 

# ==================================================================
# START Jobs control 
# start some very long lasting command 
find / -name '*.crt' | less 
# now press Ctrl + Z 
# the terminal says "Jobs stopped"
# now check the open jobs 
jobs
# you should see something like 
# [1]+  Stopped                 find / -name '*.crt' | less
# now put the job in the background and start working on something else by Ctrl + Z 
bg 1
# run the next command 
# how-to copy file via scp by using specificy identity
scp -v -o "IdentityFile /home/userName/.ssh/id_rsa" /data/path/dir/* \
userName@ServerHostName.Domain.com:/Server/Target/Dir/

# now again stop the job first by Ctrl + Z 
# check again the running jobs 
jobs 
# use should see the both of the jobs started 
# now put the first on in the forground 
fg 1
# Repeat that several times untill you get it ; ) !!!

# start command in the background
command1 &

# how-to redirect STDERR STDOUT to log file 
sh $script.sh | tee 2>&1 $log_file

# how-to start a separate shell 
( command &) &

# get the STDERR and STDOUTPUT 
output=$(command 2>&1)

# how-to detach an already started job from the terminal
jobs 
disown -h %1

# how-to start 
nohup log_script.sh &

# run a proc every 2 seconds
watch -n 2 "$cmd_to_run"

# END Jobs control 
# ==================================================================

nicedate=`date +%Z-%Y%m%d%H%M%S`

# kill a process by name 
ProcNameToKill=listener-nat_filter_caller.sh
# ps -ef | grep wget | perl -ne 'split /\s+/;print "kill $_[7] with PID $_[1] \n";`kill -9 $_[1];`'
ps -ef | grep $ProcNameToKill | grep -v "grep $ProcNameToKill" | \
perl -ne 'split /\s+/;print "kill $_[7] with PID $_[1] \n";`kill -9 $_[1];`'

# how-to display human readable file sizes on systems with stupid du
# of course you would have to have perl next_line_is_templatized
find $dir -type f -exec du -k {} \; | \
perl -ne 'split /\s+/;my $SizesInMegs=$_[0]/1024; \
printf ( "%10d %10s \n" , "$SizesInMegs" , "MB $_[1]")' | sort -nr 


export dir=/
echo sizes in MB
find $dir -type f -exec du -k {} \; | \
perl -ne 'split /\s+/;my $SizesInMegs=$_[0]/1024; \
printf ( "%10d %-100s \n" , "$SizesInMegs" , "$_[1]")' | sort -nr | more


#who has been accessing via ssh 
for file in `find /var/log/secure* | sort -rn` ; do grep -nHP 'user' $file ; done; | less


#print files recursively 
dir=/opt/
clear;find $dir -type f -exec ls -alt --time-style=long-iso --color=tty {} \; | \
perl -ne 'split(/\s+/);printf ( "%10s %2s %-20s \n" , "$_[5]", "$_[6]", "$_[7]") ; ' | sort -nr

#how-to print relative file paths to /some/DirName with perl one liner 
find /some/DirName -type f | perl -ne 'split/DirName\//;print "$_[1]"  '

# see nice dir recursively listing newest first
dir=/tmp
find $dir -name '*.tmp' -exec ls -alt --time-style=long-iso --color=tty {} \; | \
perl -ne 'split/\s+/;print "$_[5] $_[6] $_[7] \n" ;' | sort -nr | less

# how-to sort files based on a number sequence in their file names
# list dir files , grap a number from their names , print with NumberFileName, sort , \
# print finally the names without the Number but sorted 
ls -1 | perl -ne 'm/(\d{8})/; print $1 . $_ ;' | sort -nr | perl -ne 's/(\d{8})//;print $_'
   
# START === how-to implement public private key ( pkk ) authentication 
# create pub priv keys on server
# START copy 
ssh-keygen -t rsa
# Hit enter twice 
# copy the rsa pub key to the ssh server
scp ~/.ssh/id_rsa.pub $ssh_user@$ssh_server:/home/$ssh_user/
# STOP copy
# now go on the server
ssh $ssh_user@$ssh_server

# START copy 
cat id_rsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/authorized_keys
chmod -v 0700 ~/.ssh
chmod -v 0600 ~/.ssh/authorized_keys
chmod -v 0600 ~/.ssh/id_rsa
chmod -v 0644 ~/.ssh/id_rsa.pub
find ~/.ssh -exec stat -c "%U:%G %a %n" {} \;
rm -fv ~/id_rsa.pub
exit
# and verify that you can go on the server without having to type a pass
ssh $ssh_user@$ssh_server
# STOP COPY

# START copy 
ssh-keygen -t dsa
# STOP copy  
# Hit enter twice 
# START copy 
cat id_dsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/authorized_keys
chmod -v 0700 ~/.ssh
chmod -v 0600 ~/.ssh/authorized_keys
chmod -v 0600 ~/.ssh/id_dsa
chmod -v 0644 ~/.ssh/id_dsa.pub
find ~/.ssh -exec stat -c "%U:%G %a %n" {} \;
rm -fv ~/id_dsa.pub
# STOP COPY
# STOP === how-to implement public private key authentication


# show me a nice calendar 
cal -m -3

# local port forwarding
ssh -L [BIND_ADDRESS:]PORT:HOST:HOSTPORT HOSTNAME

# remote port forwarding
ssh -R [BIND_ADDRESS:]PORT:HOST:HOSTPORT HOSTNAME

# START === how-to enable port forwarding or tunnelling
export local_port=22
export remote_port=13306
export ssh_user=type_here_ssh_user
export ssh_server=type_here_the_hostname
export db_server=type_here_the_db_hostname
#[-L [bind_address:]port:host:hostport] 
ssh -L localhost:$local_port:$db_server:$remote_port $ssh_user@$ssh_server
# STOP === how-to enable port forwarding or tunnelling

# START === cron scheduling 
#edit the crontab
crontab -e
# view the crontab
crontab -l 
0 1 * * *
# * * * * * command to be executed
# - - - - -
# | | | | |
# | | | | +- - - - day of week (0 - 6) (Sunday=0)
# | | | +- - - - - month (1 - 12)
# | | +- - - - - - day of month (1 - 31)
# | +- - - - - - - hour (0 - 23)
# +--------------- minute
# STOP === cron scheduling 


#how-to limit the resources of the current session 
help ulimit 

nameTerminal $USER@`hostname`_ON_`pwd`__at__`date +%Y-%m-%d_%H:%M:%S`


# change user password expiry information
for usr in "$userlist"; do sudo passwd $usr; sudo chage -E -1 -M -1 $usr; sudo chage -d0 $usr; done


#how-to check the file encoding
file_encoding=$(file -bi $file | sed -e 's/.*[ ]charset=//')


# Purpose: 
# to provide a simple cheat sheet for most of the Linux related commands

# usefull web sources: http://www.cyberciti.biz
# how-to add new repository to yum
yum-config-manager --add-repo http://www.example.com/example.re

#how-to view installed packages with yum on RH


yum list installed | less
yum clean all 
yum -y install perl
# update all but the linux kernel packages
yum -y --exclude=kernel\* update

/nz/kit/sbin/sendMail -dst first.last@company.com -msg "subject line" -bodyTextFile $outfile -removeFile

# start putty with preloaded session on windowz
cmd /c start /max putty -load username@hostname


# how-to enable pw auth on apache
pw_file=/var/www/html/maint/.htpasswd
user=mmt
htpasswd -c $pw_file $user

#how-to change the access and mofication timestamp
ts='201401181205.09'
touch -a -m -t "$ts" "$file"

# how-to install packages on ubuntu
apt-get -y install $package_name
# howto install packages on red-hat
yum install $package_name

#v1.9.5 how-to use text editor for longer command typing
set EDITOR=vim
#Ctrl+X,E

#v1.9.5 - how-to get variations by curly expansions
echo {A,B,C}{0,1,3}

#how-to convert file encoding 
iconv -f 'iso-8859-1' -t 'utf-8' "$file"



# how-to load document with wget by using cookies.txt
export url=www.google.com
export out_file=$proj_dir/docs/site/data/issues/
wget $url --user-agent=agent --load-cookies=~/.cookie.txt --output-document=$out_file

#how-to perform a command frequintly 
while $(sleep 0.2); do date "+%Y:%m:%d %H:%M:%S"; done


# how-to 
cat << "EOF" > path/to/instructed.cnf
{
    foo_var=bar_val
}
EOF
#^^^ no space after the new line

# eof file:linux-cheat-sheet

Labels

perl (41) Cheat Sheet (25) how-to (24) windows (14) sql server 2008 (13) linux (12) oracle (12) sql (12) Unix (11) cmd windows batch (10) mssql (10) cmd (9) script (9) textpad (9) netezza (8) sql server 2005 (8) cygwin (7) meta data mssql (7) metadata (7) bash (6) code generation (6) Informatica (5) cheatsheet (5) energy (5) tsql (5) utilities (5) excel (4) future (4) generic (4) git cheat sheet (4) html (4) perl modules (4) programs (4) settings (4) sh (4) shortcuts (4) поуки (4) принципи (4) Focus Fusion (3) Solaris (3) cool programs (3) development (3) economy (3) example (3) freeware (3) fusion (3) logging (3) morphus (3) mssql 2005 (3) nuclear (3) nz (3) parse (3) python (3) sftp (3) sofware development (3) source (3) sqlplus (3) table (3) vim (3) .Net (2) C# (2) China (2) GUI (2) Google (2) GoogleCL (2) Solaris Unix (2) architecture (2) ascii (2) awk (2) batch (2) cas (2) chrome extensions (2) code2html (2) columns (2) configuration (2) conversion (2) duplicates (2) excel shortcuts (2) export (2) file (2) free programs (2) informatica sql repository (2) linux cheat sheet (2) mssql 2008 (2) mysql (2) next big future (2) nsis (2) nz netezza cheat sheet (2) nzsql (2) ora (2) prediction (2) publish (2) release management (2) report (2) security (2) single-click (2) sqlserver 2005 (2) sqlserver 2008 (2) src (2) ssh (2) template (2) tools (2) vba (2) video (2) xlt (2) xml (2) youtube videos (2) *nix (1) .vimrc (1) .virmrc vim settings configs (1) BSD license (1) Bulgaria (1) Dallas (1) Database role (1) Dense plasma focus (1) Deployment (1) ERP (1) ExcelToHtml (1) GD (1) GDP (1) HP-UX (1) Hosting (1) IDEA (1) INC (1) IT general (1) ITIL management bullshit-management (1) IZarc (1) Java Web Start (1) JavaScript anchor html jquery (1) Khan Academy (1) LINUX UNIX BASH AND CYGWIN TIPS AND TRICKS (1) Linux Unix rpm cpio build install configure (1) Linux git source build .configure make (1) ListBox (1) MIT HYDROGEN VIRUS (1) OO (1) Obama (1) PowerShell (1) Run-time (1) SDL (1) SIWA (1) SOX (1) Scala (1) Services (1) Stacks (1) SubSonic (1) TED (1) abstractions (1) ansible hosts linux bash (1) ansible linux deployment how-to (1) ansible yum pip python (1) apache (1) apache 2.2 (1) application life cycle (1) architecture input output (1) archive (1) arguments (1) avatar (1) aws cheat sheet cli (1) aws cli (1) aws cli amazon cheat sheet (1) aws elb (1) backup (1) bash Linux open-ssh ssh ssh_server ssh_client public-private key authentication (1) bash perl search and replace (1) bash stub (1) bin (1) biofuels (1) biology (1) books (1) browser (1) bubblesort (1) bugs (1) build (1) byte (1) cas_sql_dev (1) chennai (1) chrome (1) class (1) claut (1) cmdow (1) code generation sqlserver (1) command (1) command line (1) conf (1) confluence (1) console (1) convert (1) cool programs windows free freeware (1) copy paste (1) copy-paste (1) csv (1) ctags (1) current local time (1) cygwin X11 port-forwarding mintty xclock Linux Unix X (1) cygwin bash how-to tips_n_tricks (1) cygwin conf how-to (1) data (1) data types (1) db2 cheat sheet (1) db2 starter ibm bash Linux (1) debt (1) diagram (1) dictionaries (1) digital (1) disk (1) disk space (1) documentation (1) dos (1) dubai (1) e-cars (1) electric cars (1) electricity (1) emulate (1) errors (1) exponents (1) export workflow (1) extract (1) fast export (1) fexp (1) file extension (1) file permissions (1) findtag (1) firewall (1) for loop (1) freaky (1) functions (1) fusion research (1) german (1) git gitlab issues handling system (1) google cli (1) google code (1) google command line interface (1) gpg (1) ha (1) head (1) helsinki (1) history (1) hop or flop (1) host-independant (1) how-to Windows cmd time date datetime (1) ibm db2 cognos installation example db deployment provisioning (1) ideas (1) image (1) informatica oracle sql (1) informatica repo sql workflows sessions file source dir (1) informatica source files etl (1) install (1) isg-pub issue-tracker architecture (1) it management best practices (1) java (1) jump to (1) keyboard shortcuts (1) ksh (1) level (1) linkedin (1) linux bash ansible hosts (1) linux bash commands (1) linux bash how-to shell expansion (1) linux bash shell grep xargs (1) linux bash tips and t ricks (1) linux bash unix cygwin cheatsheet (1) linux bash user accounts password (1) linux bash xargs space (1) linux cheat-sheet (1) linux cheatsheet cheat-sheet revised how-to (1) linux how-to non-root vim (1) linux ssh hosts parallel subshell bash oneliner (1) london (1) make (1) me (1) metacolumn (1) metadata functions (1) metaphonre (1) method (1) model (1) movie (1) multithreaded (1) mysql cheat sheet (1) mysql how-to table datatypes (1) n900 (1) nano (1) neteza (1) netezza bash linux nps (1) netezza nps (1) netezza nps nzsql (1) netezza nz Linux bash (1) netezza nz bash linux (1) netezza nz nzsql sql (1) netezza nzsql database db sizes (1) non-password (1) nord pol (1) nps backup nzsql schema (1) number formatting (1) nz db size (1) nz table count rows (1) nzsql date timestamp compare bigint to_date to_char now (1) on-lier (1) one-liners (1) one-to-many (1) oneliners (1) open (1) open source (1) openrowset (1) openssl (1) oracle PL/SQL (1) oracle Perl perl (1) oracle installation usability (1) oracle number formatting format-model ora-sql oracle (1) oracle templates create table (1) oracle trigger generic autoincrement (1) oracle vbox virtual box cheat sheet (1) oracle virtual box cheat sheet (1) outlook (1) parser (1) password (1) paths (1) perl @INC compile-time run-time (1) perl disk usage administration Linux Unix (1) perl modules configuration management (1) permissions (1) php (1) picasa (1) platform (1) postgreSQL how-to (1) powerShell cmd cygwin mintty.exe terminal (1) ppm (1) predictions (1) prices (1) principles (1) productivity (1) project (1) prompt (1) proxy account (1) public private key (1) publishing (1) putty (1) qt (1) read file (1) registry (1) relationship (1) repository (1) rm (1) scala ScalaFmt (1) scp (1) scripts (1) scsi (1) search and replace (1) sed (1) sendEmail (1) sh stub (1) shortcuts Windows sql developer Oracle (1) sidebar (1) silicon (1) smells (1) smtp (1) software development (1) software procurement (1) sofware (1) sort (1) sql script (1) sql_dev (1) sqlcmd (1) sqlite (1) sqlite3 (1) sshd (1) sshd cygwin (1) stackoverflow (1) stored procedure (1) stub (1) stupidity (1) subroutines (1) svn (1) sysinternals (1) system design (1) tail (1) tar (1) temp table (1) templates (1) teradata (1) terminal (1) test (1) testing (1) theory (1) thorium (1) time (1) tip (1) title (1) tmux .tmux.conf configuration (1) tmux efficiency bash (1) tool (1) ui code prototyping tips and tricks (1) umask Linux Unix bash file permissions chmod (1) url (1) urls (1) user (1) utility (1) utils (1) vb (1) vbox virtual box cheat sheet (1) vim perl regex bash search for string (1) vim recursively hacks (1) vim starter (1) vim-cheat-sheet vim cheat-sheet (1) vimeo (1) visual stuio (1) warsaw (1) wiki (1) wikipedia (1) window (1) windows 7 (1) windows 8 (1) windows programs (1) windows reinstall (1) windows utility batch perl space Windows::Clipboard (1) wisdoms (1) workflow (1) worth-reading (1) wrapper (1) xp_cmdshell (1) xslt (1) youtube (1)

Blog Archive

Translate with Google Translate

My Blog List