Restaurar backup de Plesk
per restaurar sense la interfície web de plesk, podem fer servir plesk bin pleskrestore Si està protegit amb password: PLESK_BACKUP_PASSWORD="backup_password" plesk bin pleskrestore --restore /root/backup_info_1712180545.tar -level [...]
Crear un fitxer tar amb tots els backups a plesk
Busquem el nom del backup que volem descarregar: plesk sbin pmm-ras --get-dump-list | grep message Fem el backup: plesk sbin pmm-ras --export-dump-as-file --dump-specification=backup_info_YYMMDDnnnn.xml --dump-file-specification=/ruta/backup.tar [...]
Atac per força bruta amb diccionari, bash i curl
#!/bin/bash while read contrasenya; do echo $contrasenya echo "" curl -i -s -k -X POST -H 'host: localhost:3000' -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 [...]
Funcionament bàsic GIT (v2)
Per inicialitzar un repositori anomenat repo1 (que tenim creat al servidor server1.tld), primer hem de crear la carpeta amb el nom del repositori i anar-hi: mkdir repo1 [...]
Encriptar i desencriptar amb openssl
Text: echo "text super secret!" | openssl aes-256-cbc -a -pass pass:password -pbkdf2 U2FsdGVkX1/FVsTkQ9feiJNQYBUsokXRd/nQsxcwIKPJSpe61T73/k0Zy0EjVlrW echo "U2FsdGVkX1/FVsTkQ9feiJNQYBUsokXRd/nQsxcwIKPJSpe61T73/k0Zy0EjVlrW" | openssl aes-256-cbc -d -a -pass pass:password -pbkdf2 Fitxer: openssl aes-256-cbc [...]
Guardar errors php a un fitxer (amb plesk)
error_log = "{DOCROOT}\php.log.resources"
Còpies incrementals amb Rclone
rclone sync ./origen ./desti --backup-dir=./incrementals/`date +%Y%m%d.%I%M%S` -vv
Resum bash
a l'inici de l'script... set -o errexit # Si una comanda falla, l'script s'atura, enlloc de continuar amb la següent línia set -o nounset # Farà [...]
Afegir una acció a Dolphin (KDE)
Hem de crear un fitxer a ~/.local/share/kio/servicemenus/ que acabi amb .dekstop Per exemple prova.desktop: [Desktop Entry] Type=Service MimeType=inode/directory; Actions=MSFcrear [Desktop Action MSFcrear] Name=Crea un fitxer Icon=/usr/share/icons/breeze/actions/symbolic/file-library-symbolic.svg Exec=touch [...]
Veure percentatge de cobertura d’impressió
gs -o - -sDEVICE=inkcov fitxer.pdf
Bàsics LUKS (encriptació de discs amb linux)
En tots els exemples, agafem sda1 com a partició. Cal revisar-ho per tal que s'adapti al sistema on estem treballant. Veure informació de l'encriptació de la partició: [...]
Regenerar imatge del kernel amb update-initramfs
O ho fem des de l'entorn busybox o engenguem amb un sistema live i entrem a un entorn chroot update-initramfs -u -k all update-grub
Crear i entrar en un entorn chroot
mkdir -p /var/chroot/proves/ mount /dev/sdXY /var/chroot/proves/ mount --bind /proc/ /var/chroot/proves/proc mount --bind /sys/ /var/chroot/proves/sys mount --bind /dev/ /var/chroot/proves/dev mount --bind /dev/pts/ /var/chroot/proves/dev/pts chroot /var/chroot/proves/
Passar cadena en base64 a binari
base64 -d fitxer_de_text_amb_la_cadena.txt > fitxer_resultant.ext
Redimensionar una imatge de disc creada amb dd
# muntem l’imatge losetup /dev/loop24 raspberry_la_moixina.img # que el kernel llegeixi les particions partprobe /dev/loop24 # redimensionem la partició que volem gparted /dev/loop24 # desmuntem losetup [...]
Copiar el contingut d’un camp a un altre (HTML + JQuery)
<input type="text" id="camp1" name="camp1" value="" placeholder="escriu alguna cosa" > <input type="text" id="camp2" name="camp2" value=""> <a href="#" id="boto" name="boto" value="">omple el 1 camp i fes clic aquí</a> [...]
Guardar imatges (i altres fitxers) a la base dades (MySQL) enlloc del disc dur
<?php $host = 'localhost'; $user = 'usuari'; $password = 'contrasenya'; $db = 'bdd'; mysqli_connect($host, $user, $password) or die(mysqli_error()); $con=mysqli_connect($host, $user, $password) or die(mysqli_error()); mysqli_select_db($con,$db) or die(mysqli_error()); $fitxer="https://i.imgur.com/VEIKbp0.png"; [...]
Comprovar estat disc NVME i mostrar-lo a l’entorn gràfic
#!/bin/bash export DISPLAY=:0 export NVMEZENITY=$(sudo nvme smart-log /dev/nvme0n1) zenity --info --text="$NVMEZENITY" --width=800 # executar com a root visudo i afegir... # [USUARI_GUI] ALL = NOPASSWD: /usr/sbin/nvme # [...]
Opcions per contorlar errors a scripts bash
Abans de res, comentar que l'eina shellcheck ens ajuda a revisar els script i detecta alguns dels errors comentats aquí, per tant, abans d'executar un script, el [...]
Imprimir amc PHP i CUPS
Provat amb Canon i-sensys LBP212dw amb el driver Canon LBP211/212 UFR II i configurada a CUPS amb el nom provalpd i URL lpd://IP_IMPRESSORA/lp <!DOCTYPE html> <html> <body style="font-family: [...]
Revisar estat disc NVME i altra informació RAID per software
#!/bin/bash rm /tmp/estat_raid touch /tmp/estat_raid echo>>/tmp/estat_raid "<html><pre>" echo>>/tmp/estat_raid "" echo>>/tmp/estat_raid "------------------------" echo>>/tmp/estat_raid "- smart-log /dev/nvme0 -" echo>>/tmp/estat_raid "------------------------" nvme>>/tmp/estat_raid smart-log /dev/nvme0 echo>>/tmp/estat_raid "" echo>>/tmp/estat_raid "------------------------" echo>>/tmp/estat_raid "- [...]
Rebre email cada vegada que algú fa login amb SSH
Cal que tinguem finger i mailx instal·lats. Creem el fitxer /opt/shell-login.sh ... #!/bin/bash echo "Login a $(hostname) el $(date +%Y-%m-%d) a les $(date +%H:%M)" echo "Usuari: $USER" [...]
Varis crontab
Interessant definir el destinatari qualsevol mail generat per alguna tasca del crontab... MAIL="destinatari@domini.tld" Per evitar problemes amb els paths, més val definir-lo... PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
RAID per hardware
El primer que cal fer és identificar la controlador RAID ... lspci | egrep -i 'raid' 02:00.0 RAID bus controller: Broadcom / LSI MegaRAID Tri-Mode SAS3408 (rev [...]
Túnel SSH invers
Gràcies als túnels SSH, podem connectar-nos a un PC remot que està darrera un router sense cap port obert utilitzant un servidor SSH intermediari. El següent exemple, [...]
Crear varis directoris de cop, amb una línia
mkdir -p -v /tmp/{dir1,dir2,dir3}
Editar múltiples fitxers amb sed
sed -i 's#VALOR_ORIGINAL#NOW_VALOR#g' fitxer1 fitxer2
Crear un servidor web per compartir un directory amb python
python3 -m http.server 8888
Importar un fitxer de backup a plesk
plesk sbin pmm-ras --import-file-as-dump --dump-file-specification [FITXER.tar]
Analizar logs d’apache amb goaccess
GoAccess és una eina per executar des del terminal. Ens generarà, si volem, un fitxer HTML Un cop instal·lat, cal editar el fixer /etc/goaccess/goaccess.conf i canviar la [...]
Canviar l’editor de vi a nano
export VISUAL=nano ara ja podem editar el contrab com a persones 'normals' 🙂 crontab -e
Funcions amb bash
Ús molt bàsic de funcions amb bash #!/usr/bin/env bash neteja_logs(){ dies=$1 echo "[ INFO ] - Executant la neteja de logs - $dies dies." if [[ [...]
Bàsics de grep i sed,
Busquem qualsevol valor entre 1910 i 1919... grep "191[0-9] fitxer.txt" Busquem "albe" o "hawk"... egrep -i "albe|hawk" fitxer.txt Canviem universe per Universe. La "g" vol [...]
Imprimir automàticament (Google Chrome i HTML)
Modificadors per Google Chrome: --kiosk: a pantalla completa --kiosk-printing: automatitza la impressió, sense passar per la previsualització Codi HTML: <!DOCTYPE html> <html lang=""> <head> <meta charset="utf-8"> <title></title> [...]
Actualitzar nova versió JAVA i seleccionar la que utilitzem
sudo apt install openjdk-11-jdk sudo update-alternatives --config java
Gestió d’usuaris Apache amb PHP
Exemple molt bàsic. Cal revisió: php-apache2-basic-auth-manager.zip https://github.com/rafaelgou/php-apache2-basic-auth-manager
Autenticació amb Apache forms
xemple molt bàsic. Cal revisió: apacheauthform.zip Mòduls a activar: mod_session_crypto mod_session_cookie mod_request mod_session mod_auth_form
Tecla de windows (meta key) per fer aparèixer el krunner
Editem el fitxer .config/kwinrc i hi posem aquestes dues línies... [ModifierOnlyShortcuts] Meta=org.kde.krunner,/App,,display
Configuració inicial MySQL
Una vegada instal·lat, trobem l'usuari i password al fitxer /etc/mysql/debian.conf... cat /etc/mysql/debian.cnf Accedim... mysql -u debian-sys-maint -p Afegim usuari m_serra i posem contrasenya a root [...]
Engegar i gestionar treballs en paral·lel
#!/bin/bash sleep 1 & T1=${!} sleep 4 & T2=${!} sleep 6 & T3=${!} sleep 8 & T4=${!} sleep 10 & T5=${!} # amb jobs, veiem el [...]
Connexions des de consola: nmcli
Veure estat general... nmcli general status Una cosa són les connexions, que definim un nom (NOM_PROVES)... # creem la connexió ... nmcli connection add type [...]
Netejar (sanejar, sanitization, sanitize …) variables amb PHP
Amb PHP tenim tres maneres de netejar (sanejar, sanitize, sanitization ...) les variables: htmlspecialchars() - Converteix caràcters especials, com &"", a entitats HTML htmlentities() - Similar a [...]
Buscar fitxers recursivament i ordenar per data de modificació
find $1 -type f -exec stat --format '%Y :%y %n' "{}" \; | sort -nr | cut -d: -f2- | head
Diàlegs a l’entorn gràfic des d’un Script Bash
Necessitem zenity... apt-get install zenity Tenim diferents formats de diàleg... zenity --info --text="Sóc un diàleg d'informació" --width=500 zenity --error --text="Sóc un diàleg d'error" --title="Error" --width=500 [...]
Saber data de l’últim login de cada usuari a Active Directory
$Path = "C:\LastLogon.csv" Get-ADUser -Filter {enabled -eq $true} -Properties LastLogonTimeStamp | Select-Object Name,@{Name=”Stamp”; Expression={[DateTime]::FromFileTime($_.lastLogonTimestamp).ToString(‘yyyy-MM-dd_hh:mm:ss’)}} | Export-Csv -Path $Path –notypeinformation
Query SQL per exportar els productes de woocommerce
SELECT p.ID, p.post_title 'Name', p.post_content 'Description', IF (meta.meta_key = '_sku', meta.meta_value, null) 'SKU', IF (meta.meta_key = '_price', meta.meta_value, null) 'Price', IF (meta.meta_key = '_weight', meta_value, null) 'Weight' [...]
posar la data al log del kernel (dmesg)
date | sudo tee /dev/kmsg
Parar un servei de windows que no respon
A vegades al intentar aturar un servei, per exemple Windows Update, no podem amb ni amb l'interfície gràfica ni amb la consola... net stop wuauserv entrem [...]
Veure connexions per IP
Ens mostra quantes connexions hi ha agrupades per IP. Útil per identificar un atac DoS. netstat -ntu|awk '{print $5}'|cut -d: -f1 -s|sort|uniq -c|sort -nk1 -r Veure [...]
Operadors per comprovar propietats de fitxers i directoris
-e el fitxer existeix -s el fitxer existeix i no és buid -d és un directori -h és un enllaç simbòlic -r tenim permís de lectura -w [...]
Accedir com administrador al MySQL de plesk
Per poder treballar amb totes les bases de dades per exemple. mysql -uadmin -p`cat /etc/psa/.psa.shadow`
Accedir a les opcions avançades d’un portàtil LG gram
Al veure el logo d'LG... Matenim apretat F10 per veure seleccionar el dispositiu que voleu fer boot Matenim apretat F2 pe accedir a la BIOS Un cop [...]
Reduïr mida d’un fitxer PDF amb linux
Podeu utiltizar GhostScript... gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
Veure les taules més grans d’una base de dades MySQL
Amb la següent instrucció veure ma mida de cada taula, ordenades de més grans a més petites... SELECT table_name , round(((data_length + index_length) / 1024 / 1024), [...]
Optimitzar el temps d’inici d’Ubuntu (o qualsevol sistema basat en systemd)
Primer ens convés saber quan tarda el sistema a engegar... systemd-analyze Veure el detall de cada servei... systemd-analyze blame Un cop identificat el servei que [...]
Ping amb timeout
Amb linux, si es perden pings no es veu al moment. Podem afegir aquestes opcions ... ping -D -O 8.8.8.8 Si ho volem fer per [...]
Unir fitxers PDF
Necessitem el paquet poppler-utils, per tant, l'instal·lem... apt-get install poppler-utils Un cop instal·lat, ja podem unir els fitxers... pdfunite /ruta/als/fitxers/origen/*.pdf /ruta/al/fitxer/desti.pdf
Veure els últims treballs impresos des de la consola
lpstat -W completed
Provar email relay amb telnet
$ telnet localhost Trying localhost Connected to localhost. Escape character is '^]'. 220 devphp ESMTP Postfix (Ubuntu) ehlo prova 250-devphp 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES [...]
Copiar fitxers recursivament entre servidors ESXi de VMWare
scp -v -c aes128-ctr -r /directori/origen/* USER@IP_ADDRESS:/directori/desti/
Connectar a un servidor SSH antic
En cas que veiem aquest error: Unable to negotiate with IP_ADDRESS port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1 Ens podem connectar modificant la [...]
Enviar emails amb php y MySQL
<!-- inici header --> <!DOCTYPE html> <html lang="ca"> <head> <title>ENVIAR EMAILS CONSULTANT BASE DE DADES</title> <link rel="stylesheet" href="estil.css"> <meta http-equiv="Content-type" content="text/html;charset=utf-8" /> <meta charset="UTF-8"> <meta name="keywords" [...]
Veure serveis habilitats amb systemd
Podem veure tots els serveis que s'engeguen a l'inici amb aquesta comanda... systemctl list-unit-files | grep enabled per aturar i desactivar l'inici d'AnyDesk ... systemctl list-unit-files [...]
Descarregar i guardar localment una web
wget --mirror -p --convert-links -P ./carpeta_desti https://www.domini.tld
SSH port forwarding (o túnell SSH)
En aquest exemple, aconseguim accedir via VNC a una màquina sense cap port directe obert al router (NAT). Els servidor VNC utilitza el port 5900 i la [...]
Veure totes les tasques programades de tots els usuaris amb crontab
Per llistar el contingut de tots els crontab de tots els usuaris del sistema, podem executar aquest codi... for user in $(cut -f1 -d: /etc/passwd); do echo [...]
Veure tots els processos de totes les bases de dades
En un servidor gestionat amb plesk panel, podem veure totes les sentències que s'executen a totes les bases de dades amb aquesta comada... MYSQL_PWD=`cat /etc/psa/.psa.shadow` mytop -uadmin [...]
Descarregar automàticament d’una bústia POP3 amb bash
El seguënt document explica com descarregar automàticament els fitxers d'una bústia de correu POP3 i extreure'n els fitxers adjunts. Hem de tenir instal·lats els següents paquets... apt-get [...]
Error a la comunicació de retorn entre Apache i OpenID
Després de muntar l'openID amb Apache i Google ens podem trobar que la redirecció després del login no fuciona, donant un error al cap d'una bona estona. [...]
Autenticació amb Apache i OpenID
Tot i que pot servir per a qualsevol proveïdor que disposi d'una API amb OpenID, aquest document es centre amb Google. Per tal de fer aquesta autenticació, [...]
Tallar video amb ffmpeg
Amb linux hi ha múltiples eines lliures i gratuïtes per fer-ho. En aquest exmple, farem servir ffmpeg amb Ubuntu, tot i que també es pots trobar per [...]
Desactivar serveis de l’inici
Per veure veure els seveis activats... systemctl list-unit-files | grep enabled acpid.path enabled cups.path enabled accounts-daemon.service enabled anacron.service enabled snapd.snap-repair.timer enabled Per evitar que CUPS s'engegui [...]
MySQL i PHP connexió bàsica
Per mostrar els resultat d'una consulta a un servidor MySQL amb PHP, el més senzill és quelcom similar a això... // Dades de connexió... $link=mysqli_connect("servidor","usuari","contrasenya","nom_basededades"); // [...]
Opcions de configuració de l’històric de BASH
El fitxer .bashrc que trobem al l'arrel de cada usuari (~/.bashrc) té moltes opcions de configuració. Pel què fa a les relacionades amb l'històric de comandes que [...]
Dades per configurar el correu de IONOS (1and1) a partir del 2019
Per tal de configurar qualsevol client de correu (Outlook, Thunderbird, Mail, etc.) o dispositiu mòbil... usuari: email contrasenya: XXXXXX Webmail: https://mail.ionos.es/ Servidor IMAP: imap.ionos.es (SSL port 993) [...]
Com crear un registre de correus electrònics enviats amb un script PHP
Si tenim un servidor que sospitem que pot generar SPAM des d'un script PHP, podem crear un fitxer de log per tal de veure quin fitxer l'està [...]
Buscar fitxers grans amb bash
llistem el 10 fitxers més grans dins el directori actual (recursivament)... find ./ -type f -printf '%s %p\n'| sort -nr | head -n 10 el mateix [...]
Ús bàsic de wget
Útil per executar un script sense guardar tenir en compte la resposta (l'enviem a /dev/null) ... wget -q -O /dev/null http://domini.tld/script.php Limitar la velocitat a 500 [...]
Ús bàsic de for amb bash
Exemple per fer còpia de totes les bases de dades del servidor... basesdedades=$(mysql -u usuari -pCONTRASENYA -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema)") for db in $basesdedades [...]
Utilització bàsica de tar
creem un fitxer comprimit amb Gzip amb tot els sistem, excloent el propi fitxer... tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --one-file-system llistar i filtrar... tar -tvf fitxer.tar | [...]
buscar fitxers modifcats entre dues dates
buscarem fitxers modificats en les 00:00:00 del dia 11-03-2010 i les 00:00:00 del dia 14-03-2010 ... find . -type f -newermt 2010-03-11 ! -newermt 2010-03-14
Còpia i restauració d’una base de dades MySQL
Manera ràpida de fer backup i restore d'una base de dades. còpia... mysqldump -u usuari -p -h localhost nom_base_de_dades > fitxer_bak.sql restauració... mysql -u usuari -p [...]
Tractament d’imatges amb bash
exemple que processa les imatges del directori actual (només les modificades els últims 5 dies) i les redimensiona a 125x125 píxels (posant-les al directori ../125)... for fitxer [...]
Exemple de while amb bash
Recòrrer un fitxer i mostrar línia a línia ... while read linia do echo linia done < /ruta/al/fitxer
Evaluar si fitxer s’ha modificar els últims N dies
Aquest exemple, evalua si una imatge s'ha modificat durant els últims 2 dies, si fa més dies que s'ha modificat, no fa res... nom_imatge_sense_extensio="imatge1" [[ ! -z [...]
Condicionals amb BASH (if else)
Ús molt bàsic de condicionals amb BASH. Evaluem si estem a l'any 2018 o no ... #!/bin/bash any_actual=`date +%Y` if [ "$any_actual" = "2018" ] then echo [...]
Substituïr cometes dobles per dobles i contrabarra
Útil per quan tenim cadenes que contenen cometes dobles (") i necessitem escapar-les amb contrabarra (\") sed>productes.csv 's:":\\":g' fitxer.csv
Substituïr cometes simples per dobles
Podem fer servir vàries eines, però una de ràpida i senzilla és sed sed>prod_temp 's/\x27/"/g' fitxer.csv
Crear un fitxer amb la data actual al nom
Molt útil per fer rotació de logs, backups, ... zip /var/log/nou_log`date +%m`.zip /var/log/nou_log.log Si ho posem al crontab, cada mes tindrem quelcom com... /var/log/nou_log01.zip # gener [...]
Canviar el port on escolta Apache per un sol host virtual
Editem el fitxer del vhost en qüestió... nano /var/www/vhosts/system/NOM_VHOST/conf/httpd.conf i canviem el port 80 pel què ens convingui finalment, reiniciem Apache... /etc/init.d/apache2 restart ull! aquest [...]
mysqldump errno: 24 – Too many open files
Al fer la còpia d'una base de dades MySQL amb mysqldump, podem trobar aquest error... user@server:# mysqldump>bdd_bak.sql -h servidor_mysql -pcontrasenya -u usuari nom_bdd mysqldump: [Warning] Using a [...]
Autenticació amb clau pública sense contrasenya
Per tal de connectar-vos a un servidor SSH sense password, cal que executem el següent a la màquina client... ssh-keygen -t rsa ssh USUARI_REMOT@SERVIDOR_REMOT mkdir -p .ssh [...]
Assigar el fus horari a un servidor Ubuntu
Per tal que el servidor estigui al fus horari que ens toca, només cal executar aquest comanda com a root... timedatectl set-timezone Europe/Madrid
Afegir CAPTCHA al formulari per defecte de prestashop 1.6
Cridem el codi de Google amb el header... <script src='https://www.google.com/recaptcha/api.js'></script> A la funció postProcess, hi afegim la validació (linies 54 i 55)... $this->errors[] = [...]
Gestió bàsica RAID
Tota la infomaració dels volums... vgdisplay Veure mida total del volum... pvs Com està repartit l'espai ocupat... lvs Les següents línies [...]
Funcionament bàsic GIT
#### com usuari git... cd /home/git git init --bare nom_repositori.git #### com a root... cd /ruta/al/codi git init && git remote add origin git@domini.tld:nom_repositori.git git add [...]
Ressaltar codi amb wordpress
Podem utilitzar el pluginSyntaxHighlighter Evolved: https://wordpress.org/plugins/syntaxhighlighter/ Opcions disponibles: autolinks > link URL automàticament: true / false classname > classe extra: string collapse > replegar el bloc de [...]
Redireccionar recursivament
Podem redireccionar recursivament qualsevol petició web (es pot posar URL o fitxer, a la tercera linia). Per fer-ho, afegim les següents línies al fitxer .htaccess RewriteEngine on [...]