<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on My Personal Blog</title><link>https://freuds.fr/posts/</link><description>Recent content in Posts on My Personal Blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://freuds.fr/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Bash Variables Substitutions</title><link>https://freuds.fr/posts/bash-variables-substitutions/</link><pubDate>Mon, 08 Jun 2020 08:06:25 +0600</pubDate><guid>https://freuds.fr/posts/bash-variables-substitutions/</guid><description>&lt;p&gt;This table summarizes Bash parameter expansions, providing a quick reference for manipulating shell variables. It covers operations like default value assignment, substring extraction, pattern removal, case conversion, and string length calculation.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: left"&gt;Parameter Expansion&lt;/th&gt;
&lt;th style="text-align: left"&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;code&gt;${parameter:-defaultValue}&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Get default shell variables value&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;code&gt;${parameter:=defaultValue}&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Set default shell variables value&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;code&gt;${parameter:?&amp;quot;Error Message&amp;quot;}&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Display an error message if parameter is not set&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;code&gt;${#var}&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Find the length of the string&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;code&gt;${var%pattern}&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Remove from shortest rear (end) pattern&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;code&gt;${var%%pattern}&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Remove from longest rear (end) pattern&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;code&gt;${var:num1:num2}&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Substring&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;code&gt;${var#pattern}&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Remove from shortest front pattern&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;code&gt;${var##pattern}&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Remove from longest front pattern&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;code&gt;${var/pattern/string}&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Find and replace (only replace first occurrence)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;code&gt;${var//pattern/string}&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Find and replace all occurrences&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;code&gt;${!prefix*}&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Expands to the names of variables whose names begin with prefix.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;code&gt;${var,}&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Convert first character to lowercase.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;code&gt;${var,pattern}&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Convert first character to lowercase.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;code&gt;${var,,}&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Convert all characters to lowercase.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;code&gt;${var,,pattern}&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Convert all characters to lowercase.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;code&gt;${var^}&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Convert first character to uppercase.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;code&gt;${var^pattern}&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Convert first character to uppercase.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;code&gt;${var^^}&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Convert all character to uppercase.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;code&gt;${var^^pattern}&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Convert all character to uppercase.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>How to test SMTP servers</title><link>https://freuds.fr/posts/how-to-test-smtp-servers/</link><pubDate>Mon, 08 Jun 2020 08:06:25 +0600</pubDate><guid>https://freuds.fr/posts/how-to-test-smtp-servers/</guid><description>&lt;h2 id="dns-lookup"&gt;DNS lookup&lt;/h2&gt;
&lt;p&gt;The first step is to find out which SMTP server(s) is responsible for the domain that you want to test, if you already know this you can skip this step. There are several command-line tools that can be used for this but here I’m using nslookup as well as dig as examples.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# dig example.local mx&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;(&lt;/span&gt;cut&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;;; ANSWER SECTION:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;example.local. &lt;span style="color:#ae81ff"&gt;3600&lt;/span&gt; IN MX &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt; mx1.example.local.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;example.local. &lt;span style="color:#ae81ff"&gt;3600&lt;/span&gt; IN MX &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt; mx2.example.local.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;(&lt;/span&gt;cut&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="verify-connnectivity"&gt;Verify connnectivity&lt;/h2&gt;
&lt;p&gt;To verify if it’s possible to connect to the SMTP server you can use for example telnet or netcat.&lt;/p&gt;</description></item></channel></rss>