bash script detect os and execute command

If you have multi servers Linux Distribution and should check only Ubuntu. Then you can use this script to select the os and if only match the OS then execute the command.

if [ -e "/etc/issue" ] ;
issue=`cat /etc/issue`
set -- $issue
if [ $1 = "Ubuntu" ] ;
    nginx -v 2>&1 | grep -o 1.* | cut -c1-6 

Cisco VPN server alternative

You are tired from openvpn performance issues. You want to use more opensource software? You wan to replace your Cisco ASA but don’t want to give up annyconnect VPN client software?
You want a reliable VPN server for your business? I found a solution for your requirements.

OpenConnect VPN Server called OCSERV

You can use the AnnyConnect client to dial in to OCSERV VPN server or openconnect VPN client.

On Debian/Ubuntu
apt install ocserv

You have installed the VPN Server but in Enterprise enviroments that is not enough for security. You want to use this for hundred or thousand of employees.

I want to show you my configuration of OCSERV and RADIUS integration with Privacyidea a two factor opensource solution.

If you want to use OCSERV with RADIUS please read this first

You have to compile radcli from source first without this you have no RADIUS functionality.

Look at for the latest version

How to compile

Fill the information for your radius server under


nas-identifier fw01
servers /etc/radcli/servers
dictionary /etc/radcli/dictionary
radius_timeout 10
radius_retries 3
bindaddr *

cat /etc/radcli/servers

# Server Name or Client/Server pair            Key             
## ----------------                             ---------------
#                       hardlyasecret                      donttellanyone
## uncomment the following line for simple testing of radlogin
## with freeradius-server
#localhost/localhost                            testing123
# yourradiussecrectkey

After you have compile radcli on the system you can choose to install ocserv from the distribution repository or to compile it from source. I have use the repository from the distribution.

add following to the


auth = “radius[config=/etc/radcli/radiusclient.conf,groupconfig=true]”

Fixing some errors…

custom-header = “X-CSTP-Client-Bypass-Protocol: true”

Add your own certificate for your domain

server-cert =
server-key =

VPN Pool

ipv4-network =
ipv4-netmask =

Add route to network that you want to reach form the vpn server


Asus hyper m.2 x16 card v2 put it on a server

Here we go, I have to put these card on to my server with C620 chipset. I need fast local storage.
The card is not very expensive but i need 4×4 TB SSD on these server. So we started with a simple test. I bought 4x 16 GB Optane SSD for under 14 $ per piece. When it runs with this SSD so it will run also with the big ones.
That this runs we need a chipset that supports bifurcation with PCIe. With bifurcation you can split your 16x PCIe lane into 2×8, 4x4x4x4x or 8x4x4x. We need 4x4x4x4x every SSD needs 4x PCIe lanes. Would you read more about this topic look here

I have not really enough space. On this server there are also 4x 2080 TI graphics cards. It was very close that the card fit in it.

Next step was to configure the BIOS(UEFI) to talk correctly to this card. The automatic mode is not working. In automatic mode it detect only one SSD, the first one on the Asus card.

I used on the motherboard slot 10, this information is important to configured PE3 on CPU2 correct. We look in the manual of the motherboard to see which slot is connected with the CPU. Slot11 is not working there is not enough PCIe lanes only 4x. We need 16x to split into 4x4x4x4x
Let´s jump in to the BIOS.

On the BIOS follow the rabbit pictures.

We have to choose the right CPU. We use PE3 on CPU2

Change the IOU2 from Auto to 4x4x4x4, every SSD should runs with 4x PCIe lanes.

That was it.

Check under Linux with the command dmidecode -t 9

Ubuntu 20.04 mount cifs stale file handle

What a pain in the ass. If you use mount.cifs under Ubuntu 20.04 and now you have stale file handle to edit files and more.

We look in to the manpage from mount.cifs and there is a option to solve this issue.

noserverino Client generates inode numbers itself rather than using the actual ones from the server.

See section INODE NUMBERS for more information.

Let’s Encrypt Wildcard certificate how to

Org post see here

Reqeuirement access to dns records of the domain


chmod a+x certbot-auto

./certbot-auto certonly –manual -d *.domain.example -d example.domain –preferred-challenges dns-01 –server

You will be prompted to add two txt records to your dns server, you should be able to do this.


that´s all