more content
parent
3ce129234c
commit
e13a43ef15
8 changed files with 315 additions and 0 deletions
17
Bash-Trim-Whitespace.md
Normal file
17
Bash-Trim-Whitespace.md
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
Trim whitespace in pure bash
|
||||||
|
|
||||||
|
```
|
||||||
|
# turn it on
|
||||||
|
shopt -s extglob
|
||||||
|
output=" This is a test "
|
||||||
|
|
||||||
|
### Trim leading whitespaces ###
|
||||||
|
output="${output##*( )}"
|
||||||
|
|
||||||
|
### trim trailing whitespaces ##
|
||||||
|
output="${output%%*( )}"
|
||||||
|
echo "=${output}="
|
||||||
|
|
||||||
|
# turn it off
|
||||||
|
shopt -u extglob
|
||||||
|
```
|
||||||
28
Git-Combine-Repos.md
Normal file
28
Git-Combine-Repos.md
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
Combine repos in git
|
||||||
|
|
||||||
|
```
|
||||||
|
# Create a new empty repo and clone it ("origin")
|
||||||
|
git clone git@gitlab.com:${myname}/newproject.git
|
||||||
|
cd newproject/
|
||||||
|
|
||||||
|
# Do basic required config if needed
|
||||||
|
git config user.name ${myname}
|
||||||
|
git config user.email ${myemail}
|
||||||
|
|
||||||
|
# Add each remote repo as a subdir (prefix) including commit history
|
||||||
|
git subtree add --prefix=oldproject_1 \
|
||||||
|
git@gitlab.com:${myname}/oldproject_1.git master
|
||||||
|
git subtree add --prefix=oldproject_2 \
|
||||||
|
git@gitlab.com:${myname}/oldproject_2.git master
|
||||||
|
|
||||||
|
# Do any cleanup needed - for example getting rid of a submodule
|
||||||
|
git rm oldproject_1/somegitsubmodule
|
||||||
|
git rm oldproject_1/.gitmodules
|
||||||
|
git commit -m "remove stale submodule" \
|
||||||
|
oldproject_1/.gitmodules \
|
||||||
|
oldproject_1/somegitsubmodule
|
||||||
|
|
||||||
|
# Commit the results back up to your new project
|
||||||
|
git push origin master
|
||||||
|
```
|
||||||
|
|
||||||
56
Loopback-FS.md
Normal file
56
Loopback-FS.md
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
Creating a loopback filsystem and investigating structures
|
||||||
|
|
||||||
|
```
|
||||||
|
dd if=/dev/zero of=msdos.dat bs=4096 count=20480
|
||||||
|
dd if=/dev/zero of=gpt.dat bs=4096 count=20480
|
||||||
|
|
||||||
|
parted ./msdos.dat mktable msdos
|
||||||
|
parted ./gpt.dat mktable gpt
|
||||||
|
hexdump -C ./msdos.dat > msdos_table.hex
|
||||||
|
hexdump -C ./gpt.dat > gpt_table.hex
|
||||||
|
|
||||||
|
parted ./msdos.dat mkpart primary ext3 2048s 100%
|
||||||
|
parted ./gpt.dat mkpart primary ext3 2048s 100%
|
||||||
|
hexdump -C msdos.dat > msdos_part.hex
|
||||||
|
hexdump -C gpt.dat > gpt_part.hex
|
||||||
|
|
||||||
|
sudo losetup -P /dev/loop0 ./msdos.dat
|
||||||
|
sudo losetup -P /dev/loop1 ./gpt.dat
|
||||||
|
sudo pvcreate /dev/loop0p1
|
||||||
|
sudo pvcreate /dev/loop1p1
|
||||||
|
sudo losetup -d /dev/loop0
|
||||||
|
sudo losetup -d /dev/loop1
|
||||||
|
hexdump -C msdos.dat > msdos_pv.hex
|
||||||
|
hexdump -C gpt.dat > gpt_pv.hex
|
||||||
|
|
||||||
|
sudo losetup -P /dev/loop0 ./msdos.dat
|
||||||
|
sudo losetup -P /dev/loop1 ./gpt.dat
|
||||||
|
sudo pvscan --cache
|
||||||
|
sudo vgcreate vgmsdos /dev/loop0p1
|
||||||
|
sudo vgcreate vggpt /dev/loop1p1
|
||||||
|
sudo losetup -d /dev/loop0
|
||||||
|
sudo losetup -d /dev/loop1
|
||||||
|
hexdump -C msdos.dat > msdos_vg.hex
|
||||||
|
hexdump -C gpt.dat > gpt_vg.hex
|
||||||
|
|
||||||
|
sudo losetup -P /dev/loop0 ./msdos.dat
|
||||||
|
sudo losetup -P /dev/loop1 ./gpt.dat
|
||||||
|
sudo pvscan --cache
|
||||||
|
sudo lvcreate -l 100%FREE -n lvmsdos vgmsdos
|
||||||
|
sudo lvcreate -l 100%FREE -n lvgpt vggpt
|
||||||
|
sudo losetup -d /dev/loop0
|
||||||
|
sudo losetup -d /dev/loop1
|
||||||
|
hexdump -C msdos.dat > msdos_lv.hex
|
||||||
|
hexdump -C gpt.dat > gpt_lv.hex
|
||||||
|
|
||||||
|
sudo losetup -P /dev/loop0 ./msdos.dat
|
||||||
|
sudo losetup -P /dev/loop1 ./gpt.dat
|
||||||
|
sudo pvscan --cache
|
||||||
|
sudo mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/vgmsdos/lvmsdos
|
||||||
|
sudo mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/vggpt/lvgpt
|
||||||
|
sudo losetup -d /dev/loop0
|
||||||
|
sudo losetup -d /dev/loop1
|
||||||
|
hexdump -C msdos.dat > msdos_ext.hex
|
||||||
|
hexdump -C gpt.dat > gpt_ext.hex
|
||||||
|
```
|
||||||
|
|
||||||
12
Mount-OVA.md
Normal file
12
Mount-OVA.md
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
Mount OVA (VM export file) using vboxmanage
|
||||||
|
|
||||||
|
```
|
||||||
|
# mount OVA to examine contents
|
||||||
|
# - uses vboxmanage (VirtualBox tool) to convert to RAW first
|
||||||
|
|
||||||
|
tar zxf debian_10_pvhvm.ova.gz image.vhd
|
||||||
|
vboxmanage clonemedium disk image.vhd image.raw --format RAW
|
||||||
|
sudo fdisk -l ./image.raw # (look for beginning of first partition, it's at 2048 sector)
|
||||||
|
sudo mount -o offset=$((2048*512)) ./image.raw /mnt
|
||||||
|
```
|
||||||
|
|
||||||
163
Server-Notes.md
Normal file
163
Server-Notes.md
Normal file
|
|
@ -0,0 +1,163 @@
|
||||||
|
Random server oriented notes, all over the map
|
||||||
|
|
||||||
|
```
|
||||||
|
Device Mapper:
|
||||||
|
lvdisplay|awk '/LV Name/{n=$3} /Block device/{d=$3;sub(".*:","dm-",d);print d,n;}'|sort -nk 3
|
||||||
|
dmsetup ls|awk '{n=$1;d=$3;sub(")","",d); printf("dm-%s %s\n",d,n);}'|sort -nk 3
|
||||||
|
|
||||||
|
|
||||||
|
ISO Images with Linux
|
||||||
|
=====================
|
||||||
|
genisoimage -f -J -joliet-long -r -allow-lowercase -allow-multidot \
|
||||||
|
-o foobar.iso path_to_directory_with_files
|
||||||
|
|
||||||
|
|
||||||
|
Notify / inotify
|
||||||
|
================
|
||||||
|
ps $(find /proc/*/fd/* -type l -lname 'anon_inode:inotify' 2>/dev/null \
|
||||||
|
| sed 's+/proc/\([^/]*\)/fd/.*+\1+')
|
||||||
|
echo 1 > /sys/kernel/debug/tracing/events/syscalls/sys_exit_inotify_add_watch/enable
|
||||||
|
cat /sys/kernel/debug/tracing/tracing_on
|
||||||
|
grep -c inotify_add_watch /sys/kernel/debug/tracing/trace
|
||||||
|
echo 0 > /sys/kernel/debug/tracing/events/syscalls/sys_exit_inotify_add_watch/enable
|
||||||
|
|
||||||
|
|
||||||
|
VirtualBox
|
||||||
|
==========
|
||||||
|
$ vboxmanage showmediuminfo disk source.vhdx
|
||||||
|
$ vboxmanage clonemedium disk source.vhdx dest.vdi
|
||||||
|
|
||||||
|
|
||||||
|
LVM cluster volume work
|
||||||
|
=======================
|
||||||
|
https://access.redhat.com/solutions/3618
|
||||||
|
vgchange -cn --config 'global {locking_type=0}' vgsan00
|
||||||
|
|
||||||
|
|
||||||
|
Capture bash history of logged in user
|
||||||
|
======================================
|
||||||
|
PID=1234; gdb -batch --eval "set sysroot /" --eval "attach ${PID}" \
|
||||||
|
--eval "call write_history(\"/tmp/history-${PID}.txt\")" \
|
||||||
|
--eval 'detach' --eval 'q'
|
||||||
|
|
||||||
|
|
||||||
|
Add to glibc
|
||||||
|
============
|
||||||
|
MYGLIBC=$(rpm -q --queryformat='%{version}-%{release}\n' glibc | uniq)
|
||||||
|
yum --showduplicates --disableexcludes=all install nscd-${MYGLIBC}
|
||||||
|
|
||||||
|
|
||||||
|
RHEL Cluster check
|
||||||
|
==================
|
||||||
|
xmllint -relaxng /usr/share/cluster/cluster.rng /etc/cluster/cluster.conf
|
||||||
|
|
||||||
|
|
||||||
|
Tomcat SSL
|
||||||
|
==========
|
||||||
|
http://www.digicert.com/ssl-certificate-installation-tomcat.htm
|
||||||
|
- keyAlias="tomcat" keystoreFile="tomcat.jks" keypass="tomcat"
|
||||||
|
|
||||||
|
# openssl pkcs12 -export -name tomcat -in tomcat.crt -inkey tomcat.key -out tomcat.p12 -CAfile GeoTrust_Inc.cabundle -caname root
|
||||||
|
# keytool -importkeystore -destkeystore tomcat.jks -srckeystore tomcat.p12 -srcstoretype pkcs12 -alias tomcat
|
||||||
|
# keytool -list -v -keystore tomcat.jks
|
||||||
|
|
||||||
|
|
||||||
|
SSL cert checks
|
||||||
|
===============
|
||||||
|
openssl x509 -in XXX.crt -text | grep CN=
|
||||||
|
openssl x509 -modulus -noout -in XXXX.crt | openssl md5
|
||||||
|
openssl rsa -modulus -noout -in XXXX.key | openssl md5
|
||||||
|
|
||||||
|
|
||||||
|
Oracle nifties
|
||||||
|
==============
|
||||||
|
$ lsnrctl status <ID>
|
||||||
|
$ ps -ef|grep pmon |grep -vi grep|grep -vi asm (Oracle ASM)
|
||||||
|
|
||||||
|
$ ps -ef|grep crs (Oracle RAC)
|
||||||
|
$ su - oracle
|
||||||
|
$ sqlplus / as sysdba (it will show RAC is installed)
|
||||||
|
$ select * from gv$active_instances; (verify 100% if there is RAC)
|
||||||
|
|
||||||
|
http://docs.oracle.com/cd/B28359_01/server.111/b31107/asmdiskgrps.htm#CHDIBGGH
|
||||||
|
|
||||||
|
|
||||||
|
oracle database size check
|
||||||
|
-------------------------------
|
||||||
|
--- Acutal size of segments i.e. tables/indexes
|
||||||
|
select sum(bytes)/(1024*1024*1024) from dba_segments;
|
||||||
|
select sum(bytes)/(1024*1024*1024) from dba_data_files;
|
||||||
|
-- total size of data files
|
||||||
|
|
||||||
|
crosscheck
|
||||||
|
--------------------------------------
|
||||||
|
Login to “rman target backupadmin/pwd@tns catalog cname/passwd@catalog” once you get “RMAN>” prompt, please run the following:
|
||||||
|
RMAN> Crosscheck ARCHIVELOG ALL;
|
||||||
|
|
||||||
|
oracle query for list of the tablespaces
|
||||||
|
--------------------------------------
|
||||||
|
select tablespace_name, CONTENTS from dba_tablespaces;
|
||||||
|
|
||||||
|
oracle query for list of datafiles
|
||||||
|
--------------------------------------
|
||||||
|
SELECT NAME, FILE#, STATUS, CHECKPOINT_CHANGE# "CHECKPOINT" FROM V$DATAFILE;
|
||||||
|
|
||||||
|
https://docs.oracle.com/cd/B28359_01/server.111/b28310/dfiles010.htm#ADMIN11459
|
||||||
|
https://docs.oracle.com/cd/B19306_01/server.102/b14237/dynviews_1076.htm#REFRN30050
|
||||||
|
|
||||||
|
ASM disk timeouts
|
||||||
|
|
||||||
|
SQL> select name,value,describe from v$asm_hidden_paras;
|
||||||
|
NAME VALUE DESCRIBE
|
||||||
|
--------------------------------------- -------- ----------------------------------------------------------------------
|
||||||
|
_asm_acd_chunks 1 initial ACD chunks created
|
||||||
|
[...]
|
||||||
|
_asm_global_dump_level 267 System state dump level for ASM asserts
|
||||||
|
_asm_hbeatiowait 15 number of secs to wait for PST Async Hbeat IO return
|
||||||
|
_asm_hbeatwaitquantum 2 quantum used to compute time-to-wait for a PST Hbeat check
|
||||||
|
|
||||||
|
|
||||||
|
SCSI Device Ops
|
||||||
|
===============
|
||||||
|
echo "- - -" > /sys/class/scsi_host/hostX/scan where X is your HBA
|
||||||
|
echo 1 > /sys/block/sdX/device/rescan where X is your device number
|
||||||
|
echo 1 > /sys/block/sdX/device/delete where X is your device number
|
||||||
|
|
||||||
|
|
||||||
|
MySQL Things
|
||||||
|
============
|
||||||
|
MySQL slave check:
|
||||||
|
mysql -e "show slave status\G;" | awk '/Slave_IO_Running|Slave_SQL_Running|Seconds_Behind/'
|
||||||
|
|
||||||
|
MySQL killer for AmReg:
|
||||||
|
for x in `mysqladmin processlist | grep -i select | awk -F"|" ' $7 > 30 { print $2 }'` ; do mysqladmin kill $x ; done
|
||||||
|
|
||||||
|
MySQL real DB size by DB:
|
||||||
|
SELECT table_schema "Name", sum( data_length + index_length ) / 1024 / 1024 / 1024 "Size in GB" FROM information_schema.TABLES GROUP BY table_
|
||||||
|
schema;
|
||||||
|
|
||||||
|
MySQL real DB size by Engine:
|
||||||
|
select engine,count(*),sum(index_length+data_length)/1024/1024 from information_schema.tables group by engine;
|
||||||
|
|
||||||
|
MySQL table size of a single table:
|
||||||
|
SELECT table_name,`engine`,ROUND(data_length/1024/1024,2) total_size_mb,ROUND(index_length/1024/1024,2) total_index_size_mb, table_rows FROM
|
||||||
|
information_schema.TABLES WHERE table_schema = 'threadless' and table_name = 'users';
|
||||||
|
|
||||||
|
MySQL flush buffers for shutdown:
|
||||||
|
# mysql -e "flush logs;"
|
||||||
|
# mysql -e "SET @@global.innodb_max_dirty_pages_pct = 0;"
|
||||||
|
# mysql -e "show global status like ‘Innodb_buffer_pool_pages_dirty’;"
|
||||||
|
## mysqladmin ext -i10 | grep dirty
|
||||||
|
|
||||||
|
MySQL increase connections:
|
||||||
|
gdb -p $(cat /var/run/mysqld/mysqld.pid) -ex "set max_connections=5000" -batch
|
||||||
|
|
||||||
|
Some low disk things
|
||||||
|
|
||||||
|
Low Disk (current directory, w/top 20 on largest directories)
|
||||||
|
FS="$PWD";resize;clear;date;df -h $FS; echo "Largest Directories:"; nice -n19 find $FS -mount -type d -print0 2>/dev/null|xargs -0 du -k 2>/dev/null|sort -runk1|head -n20|awk -F'\t' '{printf "%8d MB\t%s\n",($1/1024),$NF}';echo "Largest Files:"; nice -n 19 find $FS -mount -type f -print0 2>/dev/null| xargs -0 du -k | sort -rnk1| head -n20 |awk -F'\t' '{printf "%8d MB\t%s\n",($1/1024),$NF}';
|
||||||
|
|
||||||
|
Low Disk (current directory, takes into account sparse files)
|
||||||
|
FS='./';resize;clear;date;df -h $FS; echo "Largest Directories:"; du -hcx --max-depth=2 $FS 2>/dev/null | grep [0-9]G | sort -grk 1 | head -15 ;echo "Largest Files:"; nice -n 19 find $FS -mount -type f -print0 2>/dev/null| xargs -0 du -k | sort -rnk1| head -n20 |awk -F'\t' '{printf "%8d MB\t%s\n",($1/1024),$NF}'
|
||||||
|
```
|
||||||
|
|
||||||
7
Smem-Datamash.md
Normal file
7
Smem-Datamash.md
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
Pull memory stats about a multi-process app and feed to datamash
|
||||||
|
|
||||||
|
```
|
||||||
|
smem -P "[f]iref" -c "uss pss rss" | datamash -H -W --output-delimiter="," sum 1-3
|
||||||
|
smem -P "[c]hrom" -c "uss pss rss" | datamash -H -W --output-delimiter="," sum 1-3
|
||||||
|
```
|
||||||
|
|
||||||
25
YTM-to-Textbox.md
Normal file
25
YTM-to-Textbox.md
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
Google Play -> Youtube Music -> Spotlistr
|
||||||
|
|
||||||
|
```
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# build import list for spotlistr
|
||||||
|
|
||||||
|
## Screen Scrape to file
|
||||||
|
# 1. Open YTM playlist in browser
|
||||||
|
# 2. Scroll down to end, forces "lazy load" to load all tracks
|
||||||
|
# 3. Ctrl-a, Ctrl-c then Ctrl-v to file
|
||||||
|
# 4. Delete first few (~8) lines until it starts with first song
|
||||||
|
# - 4 lines per song (title artist album time)
|
||||||
|
# 5. Save and run through this script, creates <file>.tbox
|
||||||
|
# 6. Paste <file>.tbox into https://www.spotlistr.com/search/textbox
|
||||||
|
|
||||||
|
# the screen-scrape saved filename is the input
|
||||||
|
YTM="$1"
|
||||||
|
|
||||||
|
sed '/:[0-9]\{2\}$/{G;}' "${YTM}" > "${YTM}.tmp"
|
||||||
|
sed -i 's/,/;/' "${YTM}.tmp"
|
||||||
|
sed -E 'H;${x;s/(.)\n/\1,/g}' "${YTM}.tmp" | grep -F ',' > "${YTM}.csv"
|
||||||
|
awk -F, '{OFS=",";print $2 " - " $1}' "${YTM}.csv" > "${YTM}.tbox"
|
||||||
|
```
|
||||||
|
|
||||||
|
|
@ -6,11 +6,13 @@
|
||||||
|
|
||||||
- [[APT WhatProvides]]
|
- [[APT WhatProvides]]
|
||||||
- [[Apache wpadmin]]
|
- [[Apache wpadmin]]
|
||||||
|
- [[Bash Trim Whitespace]]
|
||||||
- [[DB2 Info]]
|
- [[DB2 Info]]
|
||||||
- [[Debian Upgrade]]
|
- [[Debian Upgrade]]
|
||||||
- [[Dell OpenManage]]
|
- [[Dell OpenManage]]
|
||||||
- [[Find Examples]]
|
- [[Find Examples]]
|
||||||
- [[Firefox Tweaks]]
|
- [[Firefox Tweaks]]
|
||||||
|
- [[Git Combine Repos]]
|
||||||
- [[Git Multi SSH]]
|
- [[Git Multi SSH]]
|
||||||
- [[Git Rewrite User]]
|
- [[Git Rewrite User]]
|
||||||
- [[Git Server]]
|
- [[Git Server]]
|
||||||
|
|
@ -19,7 +21,9 @@
|
||||||
- [[IPv4 Default Gateway]]
|
- [[IPv4 Default Gateway]]
|
||||||
- [[Kernel Boot Debug]]
|
- [[Kernel Boot Debug]]
|
||||||
- [[LUKS Encrypted Partitions]]
|
- [[LUKS Encrypted Partitions]]
|
||||||
|
- [[Loopback FS]]
|
||||||
- [[MX Blackhole]]
|
- [[MX Blackhole]]
|
||||||
|
- [[Mount OVA]]
|
||||||
- [[Mount qcow2]]
|
- [[Mount qcow2]]
|
||||||
- [[Netcat Replacements]]
|
- [[Netcat Replacements]]
|
||||||
- [[Proxmox Doodads]]
|
- [[Proxmox Doodads]]
|
||||||
|
|
@ -28,8 +32,11 @@
|
||||||
- [[Recover Deleted ext3]]
|
- [[Recover Deleted ext3]]
|
||||||
- [[Roku Info]]
|
- [[Roku Info]]
|
||||||
- [[Samba OSX]]
|
- [[Samba OSX]]
|
||||||
|
- [[Server Notes]]
|
||||||
|
- [[Smem Datamash]]
|
||||||
- [[Thunderbird LDAP AD]]
|
- [[Thunderbird LDAP AD]]
|
||||||
- [[uBlock Filters]]
|
- [[uBlock Filters]]
|
||||||
- [[udev Hide Partitions]]
|
- [[udev Hide Partitions]]
|
||||||
- [[Weechat Quickstart]]
|
- [[Weechat Quickstart]]
|
||||||
|
- [[YTM to Textbox]]
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue