Snippets and Notes
Collection of useful commands and configurations for system administration.
/system
Set default alsa device
Find desired device
$ cat /proc/asound/cards
then create /etc/asound.conf with following:
defaults.pcm.card 1 defaults.ctl.card 1
Replace "1" with the number of your card.
Display file sizes
$ du -sh * # Include hidden files $ du -sh .[!.]* * | sort -h $ du -sch .[!.]* * | sort -h
Print octal file permissions
$ stat -c "%a %n" * $ stat -c "%a %n" .*
Get files used by certain process
$ pgrep httpd | xargs -I {} -n 1 lsof -p {}
Set a SASL password for virsh
$ saslpasswd2 -a libvirt "username-here"
/storage
Create dummy files
# Assuming you want to create a file having 100M size. $ dd if=/dev/zero of=/tmp/100M_dummy_file bs=100M count=1 status=progress
ESXi increase VM disk size, no reboot
# Part1: # In the esxi GUI increase the VM's disk size. # Part2: # Open a shell to your VM and tell the kernel to rescan your device. In this case sda. $ echo 1 > /sys/class/block/sda/device/rescan # Install growpart $ yum install cloud-utils-growpart $ apt install cloud-guest-utils # Expand your partition using growpart. (Yes there is a space between /dev/sda and the partition number. Odd syntax right?) $ growpart /dev/sda 2 # And finally resize your file system to the newly acclaimed space $ resize2fs /dev/sda2
Resize ext4 partition
!Make backups before messing with any data! # Example given: +--------------------------------+--------+ | /dev/sda1 (ext4) | Free | +--------------------------------+--------+ # Unmount partition $ umount /dev/sda1 # Use fdisk to remove the partition. Then add the same partition but larger at the same location. $ fdisk /dev/sda # Resize the fs on your partition $ resize2fs /dev/sda1 # Check partition state $ e2fsck /dev/sda1 # Remount your partition $ mount /dev/sda1 /whatever
/networking
arp-scan to discover devices
$ arp-scan -I enp0s25 -l
SSH port forwarding
# Example hosts used: # A: 192.168.1.10 (local machine) # B: 10.10.10.10 (target server) # C: 172.16.1.10 (jump host) # D: 172.16.1.250 (second jump host) # Local port forwarding: Connect local port 2222 to port 22 on machine B via jump host C [user@A]$ ssh -L localhost:2222:10.10.10.10:22 user@172.16.1.10 # Use the forwarded connection with X11 forwarding [user@A]$ ssh -p 2222 -X localhost # Now X11 programs on B will display on A [user@B]$ firefox # Port forwarding through multiple jump hosts (C and D) to reach B [user@A]$ ssh -L localhost:1236:10.10.10.10:8443 -J user@172.16.1.10,user@172.16.1.250 user@10.10.10.10
Debian: interface configuration
$ vim /etc/network/interfaces auto "interface_name" iface "interface_name" inet static address XXX.XXX.XXX.XXX netmask XXX.XXX.XXX.XXX gateway XXX.XXX.XXX.XXX dns-nameservers XXX.XXX.XXX.XXX XXX.XXX.XXX.XXX $ systemctl restart networking
Debian: disable ipv6
# check if it is enabled $ sysctl net.ipv6.conf.all.disable_ipv6 # disable echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.lo.disable_ipv6 = 1" >> /etc/sysctl.conf # apply changes sysctl -p
/data
Viewing CSV
$ column -t -s, file.csv | less -S
Date calculations with the date command
$ date -d "${date} - 31 days"
$ date -d "+1 days"
$ date -d "Sun Sep 11 07:59:16 IST 2012+10 days"
$ prog_end_date=$(date '+%C%y%m%d' -d "$end_date+10 days")
/shell
Bash sessions
found on this blog: https://www.thanassis.space/bashheimer.html
# Find current users bash handler
$ readlink /proc/$$/fd/1
/dev/pts/13
# Test with:
$ echo "Test" >> /dev/pts/13
# Get the pid of the current shell:
$ echo $$
# Start a gdb session on this pid:
$ sudo gdb --pid 1234
# Call the write history. This maybe has to be casted as an int:
$ call write_history("/tmp/foo")
$ call (int) write_history("/tmp/foo")
# Find your result:
$ less /tmp/foo