How to do a HTTP request from terminal

A quick tip for use in terminal:

# print string auth 
echo -n "dummyuser:MyPassword" | base64

# Unix terminal (basic auth, doing http request with GET method)

curl -X GET \
  -H "Content-Type: text/xml" \
  -H "Authorization: Basic ZHVtbXl1c2VyOk15UGFzc3dvcmQ=" \
  "http://dummyserver:5000/dir/wsdl?p=ic/6e7abd99891231jij123ndb769978566c470"


# Unix terminal (basic auth, doing http request with POST method to send payload from file)

curl -X POST \
  -H "Content-Type: application/soap+xml" \
  -H "Authorization: Basic ZHVtbXl1c2VyOk15UGFzc3dvcmQ=" \
  -d @./request.xml \
  "https://dummyserver:50001/XISOAPAdapter/MessageServlet?senderParty=&senderService=SYS_LEGACY&receiverParty=&receiverService=&interface=BookingFlight_Out&interfaceNamespace=http://LGCY/namespace"


# Unix terminal (basic auth, doing http request with POST method)

curl -X POST \
  -H "Content-Type: text/xml" \
  -H "Authorization: Basic ZHVtbXl1c2VyOk15UGFzc3dvcmQ=" \
  -d "<soapenv:Envelope>....ommited lines </soapenv:Envelope>" \
  "https://dummyserver:50001/XISOAPAdapter/MessageServlet?senderParty=&senderService=SYS_LEGACY&receiverParty=&receiverService=&interface=BookingFlight_Out&interfaceNamespace=http://LGCY/namespace"



# Windows Powershell (basic auth, doing http request with GET method)

$Username = "dummyuser"
$Password = ConvertTo-SecureString "MyPassword" -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential ($Username, $Password)

Invoke-RestMethod -Uri "http://dummyserver:5000/dir/wsdl?p=ic/6e7abd99891231jij123ndb769978566c470" -Method GET -Credential $Credential


# Windows Powershell (basic auth, doing http request with POST method to send payload from file)
 
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("dummyuser:MyPassword"))
$headers = @{
    Authorization = "Basic $base64AuthInfo"
    "Content-Type" = "text/xml"
}

Invoke-RestMethod -Uri "https://dummyserver:50001/XISOAPAdapter/MessageServlet?senderParty=&senderService=SYS_LEGACY&receiverParty=&receiverService=&interface=BookingFlight_Out&interfaceNamespace=http://LGCY/namespace" -Method Post -Headers $headers -Body (Get-Content -Path "request.xml" -Raw)

Bye!

How to connect to a SFTP server from terminal using Password and SSH key authentication

Hi! this is a quick tip connect to SFTP server using a SSH key and password authentication.

Recently I’ve received a file created with Putty Key Generator «file.ppk», in order to establish the connection from terminal I had to use the private key and password to comply with the authentication method.

So, I had to extract the private key as shown as follow:

1. Open Putty Key Generator, select menu Conversions > Import key and load the ppk file

2. Select Conversions > Export OpenSSH key, you can save it with or without passphrase

3. Grant the permissions at the created file only for your user:

# Windows
icacls filename /inheritance:r /grant username:F

# Unix
chmod 700 filename 

4. Open the terminal and go to the folder where you saved the key, then execute the next command:

sftp -oHostKeyAlgorithms=+ssh-rsa -i <key> <username>@<server ip>

    Complete the pasword prompt (and the passphrase if you setted one) to establish the connection, the output must show something like this:

    $ sftp -oHostKeyAlgorithms=+ssh-rsa -i id_dummy_rsa dummyuser@111.222.33.321
    (dummyuser@111.222.33.321) Enter password: 
    Connected to 111.222.33.321.
    sftp>
    

    And thats it!

    bye! =D

    Sonarqube running in Podman containers

    This is a quick entry to show how to run sonarqube using Podman. Please note that I’m using windows powershell.

    First, create the next directory structure and add the following SQL script into sql directory:

    \SONARQUBE
    \---sql
        init-dabase.sql

    Script content:

    -- Creating db user and database for sonarqube
    
    CREATE USER mysonaruser PASSWORD 'mypassword';
    CREATE DATABASE sonarqube OWNER mysonaruser;
    

    Open that directory into the terminal, download the images from docker repository and create the volumes.

    # Download images
    
    podman pull postgres:15.4
    podman pull sonarqube:9.9.2-community
    
    # Create volumes
    
    podman volume create sonarqube_data
    podman volume create sonarqube_logs
    podman volume create sonarqube_extensions
    podman volume create postgres-data
    

    There are two ways to run the containers, creating a network or run in the same pod, please choose only one of the next.

    Seguir leyendo

    Script to remove a huge amount of files in linux

    This is a quick entry, I’m going to share the script that I have used to remove more of 10 millions of files in a linux system.

    I had this problem, in a directory the amount of files is very excesive that I can’t list, count or even get the size of the entire directory, and that directory is used for some processes on every execution it is impossible to get the infomation from there.

    In stackexchage I have found some advice to do this but nothing works for me, I used the rsync command, the find command with a recursve actions, but doesn’t work, the server takes a lot of time to list files or an error is showed.

    So, I had to create this script to delete by a set number of files (every 10000 files):

    #!/bin/bash
    TARGET_PATH=/path/to/dir
    while [ "$(ls -U $TARGET_PATH | head -1)" ]
    do
          for i in "$(ls -U $TARGET_PATH | head -10000)"
          do
            cd $TARGET_PATH
            rm -r $i
          done
          echo "executed deletion on:"+$(date)
    done
    
    

    References

    GNOME, creating Dynamic Wallpapers

    This is a quick entry, there are two kind of Dynamic wallpapers for gnome:

    • Dynamic wallpaper changed by choosen theme (light/dark)
    • Dynamic wallpaper changed by defined time transition

    It can easily identify each one, the first have a preview with the both backgrouns (light and dark), the second have a clock icon at the bottom left corner:

    They can be created using the next tools, installed from flathub.

    Dynamic Wallpaper

    https://flathub.org/apps/me.dusansimic.DynamicWallpaper

    Dynamic Wallpaper Editor

    https://flathub.org/apps/com.github.maoschanz.DynamicWallpaperEditor

    Or if you prefer, you could create and edit the files manually from the next locations:

    # Only for the actual user
    
    ## path to user xml definition of the background
    ~/.local/share/gnome-background-properties
    
    ## path to user backgrounds directory with xml definition for transitions
    ~/.local/share/backgrounds
    
    # For all users
    
    ## path to system xml definition of the background
    /usr/share/gnome-background-properties/
    
    ## path to system backgrounds directory with xml definition for transitions
    /usr/share/backgrounds/Dynamic_Wallpapers/
    

    Thats all, enjoy =D!

    Quod Libet another music player for linux

    I have been testing some alternative music players in linux, in my recent entry I talked about g4music and their clean and responsive user interface, but I miss a playlist feature on it. Well in this entry I’m going to share another player with some additional features that I have use frecuently like, id tag and playlist editor, and its very flexible to organize my music library. BUT the UI is more like the old school applications, but I consider that it has a good set of features.

    «Quod Libet is a GTK+-based audio player written in Python, using the Mutagen tagging library. It’s designed around the idea that you know how to organize your music better than we do. It lets you make playlists based on regular expressions (don’t worry, regular searches work too). It lets you display and edit any tags you want in the file, for all the file formats it supports.

    Unlike some, Quod Libet will scale to libraries with tens of thousands of songs. It also supports most of the features you’d expect from a modern media player.«

    Seguir leyendo

    Fedora, move user home directory to another partition

    This is a quick entry, after mount a new encrypted partition, I have to move my default home directory to this new partition. The easy way to do that is using the next command (as super user).

    $ usermod -m -d /path/to/new/home/dir userNameHere
    

    Where:

    -m, --move-home, Move the content of the user's home directory to the new location.

    -d, --home HOME_DIR, The user's new login directory.

    It could takes some minutes to complete but it depends of the size of your data, in my case took 5 mins to move arround of 90 GB.

    Seguir leyendo