====== How-tos (Some useful Linux tips) ====== ===== Multimedias - Conversions ===== ==== Convert Wav to Flac ==== Convert all wav files to flac files in a folder for i in *.wav; do ffmpeg -i "$i" "$i".flac ; done ==== Convert Flac to Mp3 files ==== for f in *.flac; do flac -cd "$f" | lame -b 320 - "${f%.*}".mp3; done ==== Compress all mp4 videos in a folder ==== for i in *.mp4; do ffmpeg -i "$i" -vcodec libx265 -crf 28 "${i%.*}_compressed.mp4"; done ==== Compress all mov videos in a folder ==== for i in *.mov; do ffmpeg -i "$i" -vcodec libx265 -crf 28 "${i%.*}_compressed.mp4"; done ==== Convert HEIC images to jpg ==== sudo apt install libheif-examples for file in *.heic; do heif-convert "$file" "${file/%.heic/.jpg}"; done ==== Pick a random file with Totem ==== totem "$(ls -R | shuf -n1)" ==== Compress PDF files ==== gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default \ -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages \ -dCompressFonts=true -r150 -sOutputFile=output.pdf input.pdf ==== If Totem can't read some mkv or mp4 vidéo ==== After upgrading to Ubuntu 22.04 I had some issue to read some video files (Totem crash at startup, display the error "The specified movie could not be found" or open the video with a strange format. I did install the Intel non-free drivers to solve this issue: sudo apt install intel-media-va-driver-non-free ubuntu-restricted-extras ===== Files ===== ==== Remove files recursively ==== # remove lrc files find -type f -name "*.lrc" -delete # remove .DS_Store files find -type f -name ".DS_Store" -delete ==== Remove duplicate files ==== fdupes -rdN . ==== Uncompress .tar.gz file ==== tar -zxvf file.tar.gz ==== Uncompress .tar.bz2 file ==== tar -xvjf file.tar.bz2 ==== Remove empty folders ==== find . -type d -delete ==== Search .Mp3 files ==== find . -iname "*.mp3" -print ===== Network ===== ==== Download test ==== curl -4 -o /dev/null http://bouygues.testdebit.info/100M.iso ==== Upload test ==== curl -o /tmp/temp.iso https://bouygues.testdebit.info/100M.iso curl -4 -o /dev/null -F "filecontent=@/tmp/temp.iso" http://bouygues.testdebit.info ==== Display public IP address ==== host myip.opendns.com resolver1.opendns.com ==== Open ports connexions ==== sudo netstat -antp ==== Connected users list ==== who ==== Disconnect a user ==== sudo slay user_name ==== Firewall - Status ==== sudo ufw status verbose ==== Trafic - bandwidth utilisation ==== sudo iftop -i enp9s0 ==== SSH - Launch X application over SSH ==== ssh user@host -XC application ==== FTP - Add user ==== ftpasswd --passwd --name=bob --uid=1001 --home=/home/bob --shell=/bin/false ==== NcFTP - connection ==== ncftp -u username -p apssword ftp://ftpperso.free.fr/dir/ ==== NcFTP - folder copy ==== sudo ncftpput -R -u username ftpperso.free.fr / /dir_to_copy/* ===== Hardware ===== ==== Component list ==== sudo lshw | more ==== Getting SMBIOS data from sysfs==== sudo dmidecode ==== CPU information ==== sudo lscpu ==== Battery information ==== upower -i /org/freedesktop/UPower/devices/battery_BAT0 ==== Check Wifi signal ==== wavemon ===== System ===== ==== Monitor ==== sudo glances --enable-plugin sensors ==== CPU frequency ==== cpufreq-info ==== CPU Over temperatures Log occurrences ==== sudo journalctl --since "2023-01-01" | grep temperature ==== Power Usage ==== sudo powertop ==== Security: detect signs of rootkits==== sudo chkrootkit ===== Hard-drive ===== ==== Folders/files usage ==== sudo gt5 ==== Disk - Free space on /boot partition ==== //check current kernel uname -r //check if list of old kernels is correct dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]' //purge old kernels dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]' | xargs sudo apt-get -y purge ==== SMART information ==== sudo smartctl -A /dev/sda ==== Set HD to low power consumption standby mode ==== sudo hdparm -y /dev/sdb ==== Hard drive current state ==== sudo hdparm -C /dev/sdb ==== Hard drive current Advanced Power Management (APM) value ==== sudo hdparm -B /dev/sdb ==== Change APM value ==== 60 = 5x60 = (5 minutes) sudo hdparm -B60 /dev/sdb ===== Fstab ===== Install cifs/nfs sudo apt install nfs-common sudo apt install cifs-utils ===== Install DCP-7055W scan driver ===== brsaneconfig4 -a name=(name your device) model=(model name) ip=xx.xx.xx.xx https://support.brother.com/g/b/downloadhowto.aspx?c=us_ot&lang=en&prod=dcp7055w_us_eu_as&os=128&dlid=dlf006645_000&flang=4&type3=566 ===== Fail2ban ===== Get SSH banned IP fail2ban-client status sshd ===== Nginx ===== ==== GoAccess - Log statistics (terminal) ==== * Live statistics tail -f access.log | goaccess - * Using single log file goaccess access.log * Using all log files (including .gz files) zcat -f access.log* | goaccess - * Date ranges sed -n '/'$(date '+%d\/%b\/%Y' -d 'last week')'/,$ p' access.log | goaccess -a - sed -n '/'$(date '+%d\/%b\/%Y' -d 'last month')'/,$ p' access.log | goaccess -a - sed -n '/'$(date '+%d\/%b\/%Y' -d '1 month ago')'/,$ p' access.log | goaccess -a - sed -n '/'$(date '+%d\/%b\/%Y' -d '1 week ago')'/,$ p' access.log | goaccess -a - sed -n '/'$(date '+%d\/%b\/%Y' -d 'yesterday')'/,$ p' access.log | goaccess -a - sed -n '/'$(date '+%d\/%b\/%Y' -d 'today')'/,$ p' access.log | goaccess -a - ==== GoAccess - Log statistics (dynamic HTML page) ==== goaccess access.log -o /var/www/html/report.html --log-format=COMBINED --real-time-html ==== Count pages sorted by response code ==== awk '{print $9}' access.log | sort | uniq -c | sort -rn ==== Count 404 respond code ==== cd /var/log/nginx/ awk '($9 ~ /404/)' access.log | awk '{print $7}' | sort | uniq -c | sort -rn ==== Hotlink ==== awk -F\" '($2 ~ /\.(jpg|gif)/ && $4 !~ /^https:\/\/eolienne\.f4jr\.org/){print $4}' access.log | sort | uniq -c | sort ==== List of 20 most connected IP address (since a date) ==== awk '/Jan\/2024/ {print $1};' access.log | sort | uniq -c | sort -rn | head -20 ==== Top 10 IP address sort by bandwidth utilization ==== awk 'BEGIN{ PROCINFO["sorted_in"]="@val_num_desc" } { a[$1]++; b[$1]+=$10 } END{ for(i in a) { if(++c>10) break; printf "IP: %s: ",i ; system(sprintf("numfmt --to=iec-i %s",b[i])) ; } }' access.log ===== MySQL ===== ==== Secure ==== sudo /usr/bin/mysql_secure_installation ==== Create backup user ==== sudo mysql -uroot -p GRANT LOCK TABLES, SELECT, RELOAD ON *.* TO 'backup'@'localhost' IDENTIFIED BY 'PASSWORD'; ==== Password for backup ==== /etc/mysql/conf.d/mysqldump.cnf ==== Create database ==== mysql -p -u root CREATE DATABASE db_name; GRANT ALL PRIVILEGES ON db_name.* TO 'db_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION; ==== Connect to database ==== mysql -p -u root -D db_name ==== Show tables ==== SHOW TABLES ; ===== AirPlay ===== ==== Pulse Audio ==== Installation of Airplay in Ubuntu 22.04 with Pulse Audio * https://bugs.launchpad.net/ubuntu/+source/paprefs/+bug/1871899?comments=all # Airplay ability sudo apt install pulseaudio build-essential paprefs git pulseaudio-module-raop intltool libjack0 pavucontrol pulseaudio-module-zeroconf #bug pulseaudio sudo ln -s /usr/lib/pulse-16.1+dfsg1/ /usr/lib/pulse-16.1 pactl load-module module-raop-discover ==== PipeWire ==== Discover Airplay in Ubuntu 22.10 with PipeWire sudo vi /etc/pipewire/pipewire.conf Add the following line to load module inside the //context.modules = [// section { name = libpipewire-module-raop-discover } ===== HandBrake ===== sudo apt install libdvdnav4 libdvdread4 gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly libdvd-pkg sudo dpkg-reconfigure libdvd-pkg sudo apt install ubuntu-restricted-extras ===== Pi-hole ===== ==== Upgrade ==== pihole -up ===== Gnome ===== Move the Dock 'Show Applications' button at top gsettings set org.gnome.shell.extensions.dash-to-dock show-apps-at-top true Move the windows control button to the left gsettings set org.gnome.desktop.wm.preferences button-layout 'close,minimize,maximize:' ===== Nice projects ===== * Raspberry Pi : https://www.raspberrypi.org/ - Tiny computer * Pi-Hole : https://pi-hole.net - Ad blocking using DNS - With [[https://github.com/pi-hole/pi-hole/wiki/DNSCrypt-2.0|DNSCrypt-Proxy]] * Firefox : https://www.mozilla.org/en-US/firefox/new/ - The Web Browser * Bitwarden : https://bitwarden.com/open-source/ - Password manager * MoodeAudio : http://www.moodeaudio.org/ - Audiophile-quality music playback * HifiBerry : https://www.hifiberry.com/ - Audio additional boards for Rpi * OpenHAB : https://www.openhab.org/ - Smart Home * DD-WRT : https://dd-wrt.com/ - Free your router * Ubuntu : https://ubuntu.com/ - Linux distribution * Shelly : https://www.shelly.com/en-fr - Smart Home Automation * Nicotine+ : https://nicotine-plus.org/ - Soulseek is not dead * Kodi : https://kodi.tv/ - Media Centre * NGINX : https://www.nginx.com/ - Web Server * Amplify : https://amplify.nginx.com - Web Server Monitoring * VideoLAN : https://www.videolan.org/ - Powerful media player * Waze : https://www.waze.com/ - GPS