XMPP/Jabber: fireshell[at]linux[dot]monster

OTR fingerprints: C47CFCDC D9F67D17 4C08AA1A C2500250 AB361153

Matrix/Element: [at]fireshell:matrix[dot]hostux[dot]net

IRC: fireshell on Libera Chat

OTR fingerprints: 1A66175C 7E713B1E 6D15079 87FB1952 C6866E05

  • 1 Post
  • 30 Comments
Joined 6 months ago
cake
Cake day: June 2nd, 2024

help-circle












  • Integration with Android

    The GnuPG implementation for Android is called OpenKeychain. To configure it, just go to the “key management” menu and import the previously created secret key. The only drawback of OpenKeychain for me personally is that there is no fingerprint unlocking.

    The pass implementation for Android is called android-password-store, or simply APS.

    Install and launch APS. Before synchronizing the password store, go to the “Settings” menu. There we will need the following items:

    1. Git server settings. The resulting URL should be the same as that specified on the repository page on github. Authorization type - OpenKeychain.

    2. Git utils. In this section, specify the username and email from the gpg key.

    3. OpenPGP provider. Select OpenKeychain.

    4. Autofill.

    Now you can clone. Select “clone from server” on the main screen, specify the desired location of the repository, check the git settings.

    Of course, pass is not that easy to set up. However, this price buys confidence that the tools we use will not one day be declared obsolete, will not change their data format, and will not be left without support.


  • A small script for entering passwords into various windows via rofi, I take passwords from pass.

    Example script:

    #!/bin/bash
    # Sample file rofi_pass.sh
    passwords=$(find /home/fireshell/.password-store/ -type f -name *.gpg)
    selected_pass=$(echo -e "$passwords" | awk -F "/" '{printf "%s > %s\n", $5, $6}' | rofi -dmenu -p Pass)
    item=$(echo "$selected_pass" | awk '{printf "%s/%s", $1, $3}' | sed 's/\.gpg//g')
    data=$(pass show $item)
    pass=$(echo -e "$data" | head -n1)
    login=$(echo -e "$data" | grep -e "^login: " | sed 's/^login: //g')
    xdotool type "$login"
    xdotool key Tab
    xdotool type "$pass"
    

    In awesome wm I bound a key that calls it like this:

    awful.key({ modkey}, "p", function () awful.spawn.with_shell("/home/fireshell/Scripts/rofi_pass.sh") end    ,
    {description = "rofi pass", group = "launcher"}),  
    

    I turn on the computer, press the key combination and the script works, or I run this script from the terminal (~/Scripts/rofi_pass.sh), select the password - it works (if necessary, pinentry is called to enter the main password), after that I press the key combination, select the desired entry

    passmenu: extremely useful and wonderful dmenu script.



  • Example of a Bash script that performs the following tasks

    1. Checks the availability of an important web server.
    2. Checks disk space usage.
    3. Makes a backup of the specified directories.
    4. Sends a report to the administrator’s email.

    Example script:

    #!/bin/bash
    
    # Settings
    WEB_SERVER="https://example.com"
    BACKUP_DIR="/backup"
    TARGET_DIRS="/var/www /etc"
    DISK_USAGE_THRESHOLD=90
    ADMIN_EMAIL="admin@example.com"
    DATE=$(date +"%Y-%m-%d")
    BACKUP_FILE="$BACKUP_DIR/backup-$DATE.tar.gz"
    
    # Checking web server availability
    echo "Checking web server availability..."
    if curl -s --head $WEB_SERVER | grep "200 OK" > /dev/null; then
    echo "Web server is available."
    else
    echo "Warning: Web server is unavailable!" | mail -s "Problem with web server" $ADMIN_EMAIL
    fi
    
    # Checking disk space
    echo "Checking disk space..."
    DISK_USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
    if [ $DISK_USAGE -gt $DISK_USAGE_THRESHOLD ]; then
    echo "Warning: Disk space usage exceeded $DISK_USAGE_THRESHOLD%!" | mail -s "Problem with disk space" $ADMIN_EMAIL
    else
    echo "There is enough disk space."
    fi
    
    # Creating backup
    echo "Creating backup..."
    tar -czf $BACKUP_FILE $TARGET_DIRS
    
    if [ $? -eq 0 ]; then
    echo "Backup created successfully: $BACKUP_FILE"
    else
    echo "Error creating backup!" | mail -s "Error creating backup" $ADMIN_EMAIL
    fi
    
    # Sending report
    echo "Sending report to $ADMIN_EMAIL..."
    REPORT="Report for $DATE\n\n"
    REPORT+="Web server status: $(curl -s --head $WEB_SERVER | head -n 1)\n"
    REPORT+="Disk space usage: $DISK_USAGE%\n"
    REPORT+="Backup location: $BACKUP_FILE\n"
    
    echo -e $REPORT | mail -s "Daily system report" $ADMIN_EMAIL
    
    echo "Done."
    

    Description:

    1. Check web server: Uses curl command to check if the site is available.
    2. Check disk space: Use df and awk to check disk usage. If the threshold (90%) is exceeded, a notification is sent.
    3. Create a backup: The tar command archives and compresses the directories specified in the TARGET_DIRS variable.
    4. Send a report: A report on all operations is sent to the administrator’s email using mail.

    How to use:

    1. Set the desired parameters, such as the web server address, directories for backup, disk usage threshold and email.
    2. Make the script executable:
    chmod +x /path/to/your/script.sh
    
    1. Add the script to cron to run on a regular basis:
    crontab -e
    

    Example to run every day at 00:00:

    0 0 * * * /path/to/your/script.sh
    

  • I do it externally with this script

    #!/bin/bash
    # Sample file backup-documents.sh
    cd ${HOME}/documents
    tar -cJpf /run/media/fireshell/EAGET/mybackups/documents-$(date '+%Y-%m-%d').tar.xz .
    sync
    
    #!/bin/bash
    # Sample file restore-documents.sh
    backup_dir="/run/media/fireshell/EAGET/mybackups/"
    mkdir -p ~/documents
    last_documents="$(ls -1t ${backup_dir}/documents-*.tar.xz | head -n1)"
    cd ~/documents && \
      tar -xpf ${last_documents}