--- layout: default title: Recipes MD --- #### Read a DNS records dig artgur.net +nostats +nocomments +nocmd #### I/O Stats iostat #### Checking type of executable files otool -hv test.so #### #Receipe Gzip of image ```shell dd if=/dev/sdb | gzip > ~/backup.img.gz ``` #### Progress with `dd` ``` sudo dd if=2024-11-19-raspios-bookworm-armhf.img of=/dev/disk27 status=progress sudo dd if=/dev/sdb | pv -s 5.29G | dd of=DriveCopy1.dd bs=4096 sudo pv ubuntu-24.04.1-desktop-amd64.iso | sudo dd of=/dev/disk27 ``` #### Get directory size du -sh MacOSBackup ##### Print all sizes in directory ```bash du -sh * ``` ```bash du -shc * ``` #### Compare two files ```bash vim -d file1 file2 mcdiff file1 file2 ``` ### Disk manager ```bash cfdisk /dev/sda ``` #### List disks ``` parted -l ``` #### informations about disk ```bash fdisk -l /dev/sda ``` #### Power off the disk ``` udisksctl power-off -b /dev/sdX ``` #### Generate random password ```bash pwgen -s -1 32 ``` or ``` openssl rand -hex 12 ``` #### List block devices lsblk #### Linux headers ``` uname -r apt search linux-headers-$(uname -r) ``` Show all disks with json format ```shell lsblk -J ``` List disk with uuid's ```shell lsbkl -f ``` #### MKFS ```bash mkfs.vfat -F 32 /dev/sdb4 ``` ```bash mount -i -t vfat -oumask=0000,iocharset=utf8 /dev/sdb4 /root ``` #### See what processes are using the drive ``` lsof /where/drive/is/mounted ``` ### See what process opens the port ```bash lsof -p 6919 lsof -i :6919 ``` #### See the stats of IO ``` apt install sysstat iotop ``` ``` iostat -dh 2 iotop -o sar -p -d -b 1 vmstat -d 1 vmstat -p /dev/sda2 1 ``` ### Rsync ``` rsync -ah --progress /Volumes/Data /Volumes/Data\ 1/Junk/1TB\ Drive ``` #### reloading local DNS ```shell sudo /etc/init.d/dns-clean start ``` #### Print all processes in json format ``` shell ps aux | awk -v OFS=, '{print $1, $2}' | jq -R 'split(",") | {user: .[0], pid: .[1]}' ``` ### Split files ``` split -b 70M deno ``` #### Search and execute command from the history ```bash eval `history | fzf | cut -s -d " " -f4-` ``` Adding this to `.zshrc` ``` export HISTSIZE=100000000 alias hexec='eval `history | fzf | cut -s -d " " -f4-`' ``` #### Editing command with editor `~/.zshrc` ``` bindkey '^e' edit-command-line ``` #### Copy public ssh key ```bash cat ~/.ssh/id_rsa.pub | pbcopy ``` #### change password that was saved in a variable ```bash cho "$archpass" | passwd "$archuser" --stdin ``` #### Git diff between branches git diff release-1.2.0..release-1.2.1 #### MacOS info aliases in`.zhrc` ``` alias cpu='sysctl -n machdep.cpu.brand_string' alias cpu-temp='sudo powermetrics --samplers smc | grep -i "CPU die temperature"' alias gpu-temp='sudo powermetrics --samplers smc | grep -i "GPU die temperature"' alias lsusb='sudo ioreg -p IOUSB' alias allusb='ioreg -p IOUSB -w0 -l' ``` **Power metrics** ```bash sudo powermetrics --samplers all ``` #### Install pods from non standard localisations ```ruby pod 'WASHD', :git => 'https://github.com/vatlib/EasyUITextFields.git' pod 'WASHD', :path => '/Users/artur/projs/easyuitextfields' ``` #### SQLite select and search results with FZF ```bash echo "select * from bookmarks" | sqlite3 bookmarks.db | fzf ``` #### Open file with FZF ```bash nvim -o `fzf` ``` #### Set default shell. ZSH in this case sudo chsh --shell /usr/bin/zsh user #### Show Git object ```sh pigz -d < .git/objects/02/f2cc93fee0b3cb7c9b75f49e4ded3f9b1480eb ``` #### list of wireless cards lspci -knn | grep Net -A2 #### Scan networks iwlist scan #### Shutdown shutdown -h now #### Connect to the network nmcli dev wifi connect TP-Link_5828 password my-secret-pass #### You can forward port `80` to `8090` ```shell iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8090 ``` #### Allow accepting connections on `8090` ```shell iptables -I INPUT -m tcp -p tcp --dport 8090 -j ACCEPT ``` #### Search files that contains particular string ``` shell grep -rnw "." -e "Search key" ``` #### Remove garbage files find ./ -name ".DS_Store" -depth -exec rm {} \; #### Find files, directories and symbolic links using regex find ./ -iname `fo*` and `F??` -type f,d,l #### Make text from pipe uppercased ```bash cat file.txt | tr [:lower:] [:upper:] cat file.txt | tr [a-z] [A-Z] tr [a-z] [A-Z] < linux.txt > output.txt ``` #### Installing packages for python **_just for user_** ```bash pip3 install --user meson ``` **_calling module through interpreter_** ```bash python3 -m pip install six ``` #### Remove spaces ```bash cat file.txt | tr -d ' ' ``` #### Remove duplicate characters ```bash $ cat domains.txt www.google.....com www.linkedin.com www.linuxsay.com ``` ```bash $ cat domains.txt | tr -s '.' www.google.com www.linkedin.com ``` #### Extract digit ``` bash echo "My UID is $UID" | tr -cd "[:digit:]\n" echo "My UID is $UID" | tr -d "a-zA-Z" ``` #### Translate single character ```bash echo "My UID is $UID" | tr " " "\n" ``` #### Get path by number ```bash echo $PATH | cut -d ":" -f 1 ``` #### list search path line by line ```bash echo $PATH | tr ":" "\n" ``` #### Screen capture ``` ffmpeg -f x11grab -video_size 1280x800 -framerate 25 -i $DISPLAY -c:v ffvhuff screen.mkv ffmpeg -video_size 1280x800 -framerate 25 -f x11grab -i :0.0 -f pulse -ac 2. \ -i default -vcodec vp8 -acodec libvorbis myvideo_$(date +%d_%B_%Y_%H:%M).webm ``` #### Take a screenshot ```bash xwd -root -out screenshot.xwd maim -s -u | xclip -selection clipboard -t image/png -i imlib2_grab screenshot.png ``` #### Install Python package for the user python3 -m pip install --user pyelftools #### Erase free space sudo diskutil secureErase freespace 1 /Volumes/Data\ Drive #### Format disk sudo diskutil eraseDisk ExFAT data /dev/disk26 #### Search for commit ```bash alias gf='git log --all --oneline | fzf' ``` #### Remove alpha channel from all files ```bash # ➜ brew install imagemagick ``` **Converts all files in current directory revursevely** ```bash alias rmalfa='find . -name “*.png” -exec convert “{}” -alpha off “{}” \;' ``` #### Weather alias ```sh alias weather='curl wttr.in' ``` #### Starting an electron app on wayland Start chromium using wayland ```bash chromium --enable-features=UseOzonePlatform --ozone-platform=wayland ``` It’s the same for electron-based apps: ```bash `app-executable` --enable-features=UseOzonePlatform \ --ozone-platform=wayland ``` #### Save website As PDF ```bash function aspdf { /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --headless --print-to-pdf="./$1.pdf" $2 } ``` Usage ```bash aspdf "filename" "https://superuser.com/questions/592974/how-to-print-to-save-as-pdf-from-a-command-line-with-chrome-or-chromium" ``` ### Export Markdown as PDF ```bash pandoc README.md -o README.pdf ``` ```bash pandoc --from=gfm --to=pdf -o README.pdf README.md ``` #### Gem path ```hash export GEM_HOME=$HOME/.gem path=("$GEM_HOME/bin" $path) ``` #### QEMU - port forwarding ```bash qemu-system-i386 -net nic,model=rtl8139 \ -net user,hostfwd=tcp::3389-:3389,hostfwd=tcp::443-:443,hostfwd=tcp::992-:992 ``` #### SQL using regex Add a check constraint to the `id` column to enforce alphanumeric strings of exactly 5 characters long ```sql ALTER TABLE short_urls ADD CONSTRAINT id CHECK (id ~ '^[a-zA-Z0-9]{5}$'); ``` #### Console font size Edit file → `/etc/default/console-setup` ```bash dpkg-reconfigure -plow console-setup ``` #### Redirect errors to null device find / 2>/dev/null #### Installing nonfree firmware from repository I.e: Firmware for nonfree driver for Intel's WIFI cards. ``` https://packages.debian.org/sid/firmware-iwlwifi ``` ```bash apt-get update && apt-get install firmware-linux-nonfree ``` #### Installing nonfree firmware from ​manufacturer Search for binary. An example: [https://www.intel.com/content/www/us/en/support/articles/000005511/wireless.html](https://www.intel.com/content/www/us/en/support/articles/000005511/wireless.html) Extract and copy like ```bash cp iwlwifi-cc-a0-46.ucode /lib/firmware ``` ### Linux - RAM disk This might be useful for spead up programs that heavily use disk. ``` mount -t TYPE -o size=SIZE FSTYPE MOUNTPOINT ``` * `TYPE` → either `tmpfs` or `ramfs`. * `SIZE` → ie. `512m` * `FSTYPE` → File system type, either `tmpfs`, `ramfs`, `ext4`, etc. To make this setting persistent you might want to add to `/etc/fstab` fallowing line ```plain tmpfs /mnt/ramdisk tmpfs nodev,nosuid,noexec,nodiratime,size=1024M 0 0 ``` #### fstab Use 'blkid' to print the universally unique identifiers, and can be used in fstab file like ``` # UUID=1a38b8ca-e1f5-45e6-bbe8-3abd2775b3a6 / ext4 errors=remount-ro 0 1 /swapfile none swap sw 0 0 /dev/disk/by-uuid/4D3C-4E36 /mnt/4D3C-4E36 auto nosuid,nodev,nofail,x-gvfs-show 0 0 UUID=e21eebe4-471a-4375-8c4c-618b3733a940 /home ext4 nodev,nosuid 0 2 ``` ### Linux - Mount disk from `qcow2` image Step 1 - Enable NBD on the Host ```bash modprobe nbd max_part=8 ``` Step 2 - Connect the QCOW2 as network block device ```bash qemu-nbd --connect=/dev/nbd0 /var/lib/vz/images/100/vm-100-disk-1.qcow2 ``` Step 3 - Find The Virtual Machine Partitions ```bash fdisk /dev/nbd0 -l ``` Step 4 - Mount the partition from the VM ```bash mount /dev/nbd0p1 /mnt/somepoint/ ``` Step 5 - After you done, unmount and disconnect ```bash umount /mnt/somepoint/ qemu-nbd --disconnect /dev/nbd0 rmmod nbd ``` ### Ubuntu - Power management To make Ubuntu do nothing when laptop lid is closed: From For 13.10 onwards: Open the `/etc/systemd/logind.conf` file in a text editor as root, for example: ```bash sudo -H gedit /etc/systemd/logind.conf ``` If `HandleLidSwitch` is not set to ignore then change it: ```bash HandleLidSwitch=ignore ``` Other settings that the action can be ignored: `HandleLidSwitchExternalPower`, `HandleLidSwitchDocked`, `IdleAction`. Restart the systemd daemon (be aware that this command will log you out): ```bash sudo systemctl restart systemd-logind ``` or, from 15.04 onwards: ```bash sudo service systemd-logind restart ``` ### Chroot environment of Debian sid Install Bootstrap ```bash sudo apt install debootstrap ``` Create a directory that you want to use for the base system (_chroot-debian_ in this case) ```bash mkdir chroot-debian ``` Create a base system ```bash sudo debootstrap sid chroot-debian http://deb.debian.org/debian ``` Valid names `sid`, `stable` or any debian code name Mount  filesystems ```bash sudo mount -o bind /dev chroot-debian/dev sudo mount -t sysfs none chroot-debian/sys sudo mount -o bind /proc chroot-debian/proc ``` Optionally, copy DNS resolver configuration. ``` sudo cp /etc/resolv.conf /path/to/chroot-env/etc/resolv.conf ``` Start chrooting ```bash sudo chroot chroot-debian /bin/bash ``` Once done, exit the session and unmount ```bash sudo umount chroot-debian/dev chroot-debian/proc ``` #### Pass variables to chrooted environment ```bash chroot ./ env -i PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ``` # Allowing user to run a command as root ```shell sudo visudo ``` ``` artur ALL=(ALL) chroot /path/to/chroot-env ``` #### Nginx - serving files setup DAV Full version with 3rd party extensions ``` apt install nginx-full nginx-extras ``` ``` location / { index nonextistent; autoindex on; autoindex_format json; } location /restricted { fancyindex on; fancyindex_exact_size off; auth_basic "Restricted"; auth_basic_user_file "/etc/nginx/.htpasswd"; } location /dropbox { index nonextistent; autoindex on; autoindex_format json; dav_methods PUT DELETE MKCOL COPY MOVE; dav_ext_methods PROPFIND OPTIONS LOCK UNLOCK; dav_access user:rw group:r all:r; # client_max_body_size 0; create_full_put_path on; client_body_temp_path /tmp/; limit_except GET PROPFIND OPTIONS HEAD { auth_basic "Restricted"; auth_basic_user_file "/etc/nginx/.htpasswd"; }         # auth_pam "Restricted";         # auth_pam_service_name "common-auth"; } ``` Create password ``` bash echo -n 'sammy:' >> /etc/nginx/.htpasswd openssl passwd -apr1 >> /etc/nginx/.htpasswd ``` Another method to set the password ```bash htpasswd -c /etc/nginx/.htpasswd sammy htpasswd /etc/nginx/.htpasswd another_user ``` **UI Client `Cyberduck`** #### Backing up the entire OS ``` sudo rsync -aAXHv / --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /mnt ``` Python ``` install python3-full ``` ### Check battery ```bash upower -i /org/freedesktop/UPower/devices/battery_BAT0 upower -i `upower -e | grep 'BAT'` upower -i $(upower -e | grep BAT) | grep --color=never -E "state|to\ full|to\ empty|percentage" ``` Battery capacity ```bash cat /sys/class/power_supply/BAT0/capacity ``` `apt install acpi` acpi -V acpi -t Watch the status for example: ``` watch --interval=5 acpi -V ``` ### How to scan open ports ``` nmap -sT -p- 10.10.8.8 nmap -p 80 127.0.0.1 ``` ### Remove non ASCII characters form the file ```bash sed 's/[^[:print:]\t]//g' script.sh > cleaned_script.sh ``` ## Network Manager Check Status ``` pacman -S networkmanager systemctl status NetworkManager ``` ```bash nmcli dev status nmcli radio wifi ``` ```bash nmcli radio wifi on ``` ```bash nmcli dev wifi list ``` ```bash nmcli dev wifi connect network-ssid ``` ```bash nmcli dev wifi connect network-ssid password "network-password" # with password promot nmcli dev wifi connect network-ssid password "network-password" ``` ``` nmcli con show ``` ``` nmcli con down ssid/uuid nmcli con up ssid/uuid ``` ``` ip link set eno1 up ``` ### DHCP Client ``` pacman -S dhclient dhcpcd ``` Turn dchp on for the interface ``` dhclient eth0 -v ``` ### Create file ```bash cat > filename <<- "EOF" file contents more contents EOF ``` ### Get data about file include number of links ```bash stat f1 ``` ### File decryption ```bash openssl aes256 -md sha256 -d -in file.enc.zip -out file.zip -pass pass:"" ``` ### Base64 ```bash openssl base64 -in qrcode.png -out qrcode.png.base64 openssl base64 -in qrcode.png ``` ### tar.xz ``` tar -xJf file.tar.xz -C destination ``` ## Execute command Execute `ls` for each each object in current directory that starts from `D` or `M` ``` ls {D*,M*} ``` Utworzenie dwóch katalogów `test_a`, `test_b` ``` mkdir test_{a,b} ``` ### copy content of directory and merge it. Dereference links ``` cp -LTr /form/ . ``` ## JSON Linux apis ``` tree -J ls -l | jq -R -s -c 'split("\n")[:-1]' ``` ### List dependencies ```bash pacman -Sy lld llvm-nm ``` ### Find location of executable ``` type -a python ``` ### Reload each file save ```bash brew install fswatch fswatch -o . --exclude "\.build.*$" | xargs -n1 -I{} your-command ``` ## Add capabilities allow all to open 443 port ```bash sudo setcap 'cap_net_bind_service=+ep' ./service ``` # Test speed of the drive ``` sudo hdparam -t --direct /dev/mmcblk0 ```