mirror of
https://github.com/octoleo/telegram-bot-bash.git
synced 2024-11-21 23:25:08 +00:00
check for bash features
This commit is contained in:
parent
6718d24133
commit
1153d654d8
77
README.html
77
README.html
@ -94,6 +94,7 @@ Written by Drew (@topkecleon) and Kay M (@gnadelwartz).
|
|||||||
<p>Uses <a href="http://github.com/dominictarr/JSON.sh">JSON.sh</a> and the magic of sed.</p>
|
<p>Uses <a href="http://github.com/dominictarr/JSON.sh">JSON.sh</a> and the magic of sed.</p>
|
||||||
<p>Even bashbot is written in bash, it depends on commands typically available in a Unix/Linux Environment. More concrete on the common commands provided by recent versions of <a href="https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands">coreutils</a>, <a href="https://en.wikipedia.org/wiki/BusyBox#Commands">busybox</a> or <a href="https://landley.net/toybox/help.html">toybox</a>, see <a href="doc/7_develop.md#common-commands">Developer Notes</a></p>
|
<p>Even bashbot is written in bash, it depends on commands typically available in a Unix/Linux Environment. More concrete on the common commands provided by recent versions of <a href="https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands">coreutils</a>, <a href="https://en.wikipedia.org/wiki/BusyBox#Commands">busybox</a> or <a href="https://landley.net/toybox/help.html">toybox</a>, see <a href="doc/7_develop.md#common-commands">Developer Notes</a></p>
|
||||||
<p><em>Note for MacOS and BSD Users:</em> As bashbot heavily uses modern bash and (gnu) grep/sed features, bashbot will not run without installing additional software, see <a href="doc/0_install.md">Install Bashbot</a></p>
|
<p><em>Note for MacOS and BSD Users:</em> As bashbot heavily uses modern bash and (gnu) grep/sed features, bashbot will not run without installing additional software, see <a href="doc/0_install.md">Install Bashbot</a></p>
|
||||||
|
<p><em>Note for emmbedded systems:</em> busybox or toybox ONLY is not sufficient, you need a to install a "real" bash, see <a href="doc/0_install.md">Install Bashbot</a></p>
|
||||||
<p>Bashbot <a href="https://github.com/topkecleon/telegram-bot-bash">Documentation</a> and <a href="https://github.com/topkecleon/telegram-bot-bash/releases">Downloads</a> are available on www.github.com</p>
|
<p>Bashbot <a href="https://github.com/topkecleon/telegram-bot-bash">Documentation</a> and <a href="https://github.com/topkecleon/telegram-bot-bash/releases">Downloads</a> are available on www.github.com</p>
|
||||||
<h2>Documentation</h2>
|
<h2>Documentation</h2>
|
||||||
<ul>
|
<ul>
|
||||||
@ -157,9 +158,11 @@ Written by Drew (@topkecleon) and Kay M (@gnadelwartz).
|
|||||||
<p>To install and run bashbot you need access to a linux/unix command line. If you don't know how to get access to a linux/unix command line you should stop reading here :-(</p>
|
<p>To install and run bashbot you need access to a linux/unix command line. If you don't know how to get access to a linux/unix command line you should stop reading here :-(</p>
|
||||||
<p>In addition you need a <a href="https://telegram.org">Telegram client</a> and a mobile phone to <a href="https://telegramguide.com/create-a-telegram-account/">register an account</a>. If you don't want to register for Telegram you should stop reading here ;-)</p>
|
<p>In addition you need a <a href="https://telegram.org">Telegram client</a> and a mobile phone to <a href="https://telegramguide.com/create-a-telegram-account/">register an account</a>. If you don't want to register for Telegram you should stop reading here ;-)</p>
|
||||||
<p>After you're registered to Telegram send a message to <a href="https://telegram.me/botfather">@botfather</a>, <a href="doc/1_firstbot.md">create a new Telegram Bot token</a> and write it down. You need the token to install the bot.</p>
|
<p>After you're registered to Telegram send a message to <a href="https://telegram.me/botfather">@botfather</a>, <a href="doc/1_firstbot.md">create a new Telegram Bot token</a> and write it down. You need the token to install the bot.</p>
|
||||||
<p>Now open a terminal and check if bash is installed: <code>which bash && echo "bash installed!"</code>. If you get an error message bash is not installed.</p>
|
<p>Now open a terminal and check if bash is installed:</p>
|
||||||
|
<pre><code>which bash && echo "bash seems available..."
|
||||||
|
</code></pre>
|
||||||
<p>Create a new directory, change to it: <code>mkdir tbb; cd tbb</code> and download the latest '*.tar.gz' file from <a href="https://github.com/topkecleon/telegram-bot-bash/releases">https://github.com/topkecleon/telegram-bot-bash/releases</a>. This can be done with the commands:</p>
|
<p>Create a new directory, change to it: <code>mkdir tbb; cd tbb</code> and download the latest '*.tar.gz' file from <a href="https://github.com/topkecleon/telegram-bot-bash/releases">https://github.com/topkecleon/telegram-bot-bash/releases</a>. This can be done with the commands:</p>
|
||||||
<div class="sourceCode" id="cb1"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb1-1" title="1"><span class="fu">wget</span> -q https://github.com/<span class="va">$(</span><span class="fu">wget</span> -q https://github.com/topkecleon/telegram-bot-bash/releases/latest -O - <span class="kw">|</span> <span class="fu">egrep</span> <span class="st">'/.*/.*/.*tar.gz'</span> -o<span class="va">)</span></a></code></pre></div>
|
<div class="sourceCode" id="cb2"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb2-1" title="1"><span class="fu">wget</span> -q https://github.com/<span class="va">$(</span><span class="fu">wget</span> -q https://github.com/topkecleon/telegram-bot-bash/releases/latest -O - <span class="kw">|</span> <span class="fu">egrep</span> <span class="st">'/.*/.*/.*tar.gz'</span> -o<span class="va">)</span></a></code></pre></div>
|
||||||
<p>Extract the '*.tar.gz' file and change to bashbot directory: <code>tar -xzf *.tar.gz; cd telegram-bot-bash</code>, install bashbot: <code>./bashbot.sh init</code> and enter your bot token when asked. All other questions can be answered by hitting the <Return> key.</p>
|
<p>Extract the '*.tar.gz' file and change to bashbot directory: <code>tar -xzf *.tar.gz; cd telegram-bot-bash</code>, install bashbot: <code>./bashbot.sh init</code> and enter your bot token when asked. All other questions can be answered by hitting the <Return> key.</p>
|
||||||
<p>That's all, now you can start your bot with <code>./bashbot.sh start</code> and send him messages:</p>
|
<p>That's all, now you can start your bot with <code>./bashbot.sh start</code> and send him messages:</p>
|
||||||
<pre><code>/start
|
<pre><code>/start
|
||||||
@ -196,18 +199,18 @@ It features background tasks and interactive chats, and can serve as an interfac
|
|||||||
<p>A powerful tool to improve your scripts is <code>shellcheck</code>. You can <a href="https://www.shellcheck.net/">use it online</a> or <a href="https://github.com/koalaman/shellcheck#installing">install shellcheck locally</a>. Shellcheck is used extensively in bashbot development to ensure a high code quality, e.g. it's not allowed to push changes without passing all shellcheck tests. In addition bashbot has a <a href="doc/7_develop.md">test suite</a> to check if important functionality is working as expected.</p>
|
<p>A powerful tool to improve your scripts is <code>shellcheck</code>. You can <a href="https://www.shellcheck.net/">use it online</a> or <a href="https://github.com/koalaman/shellcheck#installing">install shellcheck locally</a>. Shellcheck is used extensively in bashbot development to ensure a high code quality, e.g. it's not allowed to push changes without passing all shellcheck tests. In addition bashbot has a <a href="doc/7_develop.md">test suite</a> to check if important functionality is working as expected.</p>
|
||||||
<h3>Use printf whenever possible</h3>
|
<h3>Use printf whenever possible</h3>
|
||||||
<p>If you're writing a script and it is taking external input (from the user as arguments or file system...), you shouldn't use echo to display it. <a href="https://unix.stackexchange.com/a/6581">Use printf whenever possible</a></p>
|
<p>If you're writing a script and it is taking external input (from the user as arguments or file system...), you shouldn't use echo to display it. <a href="https://unix.stackexchange.com/a/6581">Use printf whenever possible</a></p>
|
||||||
<div class="sourceCode" id="cb4"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb4-1" title="1"> <span class="co"># very simple</span></a>
|
<div class="sourceCode" id="cb5"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb5-1" title="1"> <span class="co"># very simple</span></a>
|
||||||
<a class="sourceLine" id="cb4-2" title="2"> <span class="bu">echo</span> <span class="st">"text with variables. PWD=</span><span class="va">$PWD</span><span class="st">"</span></a>
|
<a class="sourceLine" id="cb5-2" title="2"> <span class="bu">echo</span> <span class="st">"text with variables. PWD=</span><span class="va">$PWD</span><span class="st">"</span></a>
|
||||||
<a class="sourceLine" id="cb4-3" title="3"> <span class="bu">printf</span> <span class="st">'%s\n'</span> <span class="st">"text with variables. PWD=</span><span class="va">$PWD</span><span class="st">"</span></a>
|
<a class="sourceLine" id="cb5-3" title="3"> <span class="bu">printf</span> <span class="st">'%s\n'</span> <span class="st">"text with variables. PWD=</span><span class="va">$PWD</span><span class="st">"</span></a>
|
||||||
<a class="sourceLine" id="cb4-4" title="4"> <span class="ex">-</span><span class="op">></span> text with variables. PWD=/home/xxx</a>
|
<a class="sourceLine" id="cb5-4" title="4"> <span class="ex">-</span><span class="op">></span> text with variables. PWD=/home/xxx</a>
|
||||||
<a class="sourceLine" id="cb4-5" title="5"></a>
|
<a class="sourceLine" id="cb5-5" title="5"></a>
|
||||||
<a class="sourceLine" id="cb4-6" title="6"> <span class="co"># more advanced</span></a>
|
<a class="sourceLine" id="cb5-6" title="6"> <span class="co"># more advanced</span></a>
|
||||||
<a class="sourceLine" id="cb4-7" title="7"> <span class="va">FLOAT=</span><span class="st">"1.2346777892864"</span> <span class="va">INTEGER=</span><span class="st">"12345.123"</span></a>
|
<a class="sourceLine" id="cb5-7" title="7"> <span class="va">FLOAT=</span><span class="st">"1.2346777892864"</span> <span class="va">INTEGER=</span><span class="st">"12345.123"</span></a>
|
||||||
<a class="sourceLine" id="cb4-8" title="8"> <span class="bu">echo</span> <span class="st">"text with variabeles. float=</span><span class="va">$FLOAT</span><span class="st">, integer=</span><span class="va">$INTEGER</span><span class="st">, PWD=</span><span class="va">$PWD</span><span class="st">"</span></a>
|
<a class="sourceLine" id="cb5-8" title="8"> <span class="bu">echo</span> <span class="st">"text with variabeles. float=</span><span class="va">$FLOAT</span><span class="st">, integer=</span><span class="va">$INTEGER</span><span class="st">, PWD=</span><span class="va">$PWD</span><span class="st">"</span></a>
|
||||||
<a class="sourceLine" id="cb4-9" title="9"> <span class="ex">-</span><span class="op">></span>text with variables. float=1.2346777892864, integer=12345.123, PWD=/home/xxx</a>
|
<a class="sourceLine" id="cb5-9" title="9"> <span class="ex">-</span><span class="op">></span>text with variables. float=1.2346777892864, integer=12345.123, PWD=/home/xxx</a>
|
||||||
<a class="sourceLine" id="cb4-10" title="10"></a>
|
<a class="sourceLine" id="cb5-10" title="10"></a>
|
||||||
<a class="sourceLine" id="cb4-11" title="11"> <span class="bu">printf</span> <span class="st">"text with variables. float=%.2f, integer=%d, PWD=%s\n"</span> <span class="st">""</span> <span class="st">"</span><span class="va">$INTEGER</span><span class="st">"</span> <span class="st">"</span><span class="va">$PWD</span><span class="st">"</span></a>
|
<a class="sourceLine" id="cb5-11" title="11"> <span class="bu">printf</span> <span class="st">"text with variables. float=%.2f, integer=%d, PWD=%s\n"</span> <span class="st">""</span> <span class="st">"</span><span class="va">$INTEGER</span><span class="st">"</span> <span class="st">"</span><span class="va">$PWD</span><span class="st">"</span></a>
|
||||||
<a class="sourceLine" id="cb4-12" title="12"> <span class="ex">-</span><span class="op">></span>text with variables. float=1.23, integer=12345, PWD=/home/xxx</a></code></pre></div>
|
<a class="sourceLine" id="cb5-12" title="12"> <span class="ex">-</span><span class="op">></span>text with variables. float=1.23, integer=12345, PWD=/home/xxx</a></code></pre></div>
|
||||||
<h3>Do not use #!/usr/bin/env bash</h3>
|
<h3>Do not use #!/usr/bin/env bash</h3>
|
||||||
<p><strong>We stay with /bin/bash shebang, because it's more save from security perspective.</strong></p>
|
<p><strong>We stay with /bin/bash shebang, because it's more save from security perspective.</strong></p>
|
||||||
<p>Use of a fixed path to the system provided bash makes it harder for attackers or users to place alternative versions of bash and avoids using a possibly broken, mangled or compromised bash executable.</p>
|
<p>Use of a fixed path to the system provided bash makes it harder for attackers or users to place alternative versions of bash and avoids using a possibly broken, mangled or compromised bash executable.</p>
|
||||||
@ -237,38 +240,38 @@ It features background tasks and interactive chats, and can serve as an interfac
|
|||||||
<h3>Can I send messages from CLI and scripts?</h3>
|
<h3>Can I send messages from CLI and scripts?</h3>
|
||||||
<p>Of course, you can send messages from CLI and scripts, simply install bashbot as <a href="#Your-really-first-bashbot-in-a-nutshell">described here</a>, send the message '/start' to set yourself as botadmin and stop the bot with <code>./bashbot.sh stop</code>.</p>
|
<p>Of course, you can send messages from CLI and scripts, simply install bashbot as <a href="#Your-really-first-bashbot-in-a-nutshell">described here</a>, send the message '/start' to set yourself as botadmin and stop the bot with <code>./bashbot.sh stop</code>.</p>
|
||||||
<p>Run the following commands in your bash shell or script while you are in the installation directory:</p>
|
<p>Run the following commands in your bash shell or script while you are in the installation directory:</p>
|
||||||
<div class="sourceCode" id="cb5"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb5-1" title="1"><span class="co"># prepare bash / script to send commands</span></a>
|
<div class="sourceCode" id="cb6"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb6-1" title="1"><span class="co"># prepare bash / script to send commands</span></a>
|
||||||
<a class="sourceLine" id="cb5-2" title="2"><span class="bu">export</span> <span class="va">BASHBOT_HOME=</span><span class="st">"</span><span class="va">$(</span><span class="bu">pwd</span><span class="va">)</span><span class="st">"</span></a>
|
<a class="sourceLine" id="cb6-2" title="2"><span class="bu">export</span> <span class="va">BASHBOT_HOME=</span><span class="st">"</span><span class="va">$(</span><span class="bu">pwd</span><span class="va">)</span><span class="st">"</span></a>
|
||||||
<a class="sourceLine" id="cb5-3" title="3"><span class="bu">source</span> ./bashbot.sh source</a>
|
<a class="sourceLine" id="cb6-3" title="3"><span class="bu">source</span> ./bashbot.sh source</a>
|
||||||
<a class="sourceLine" id="cb5-4" title="4"></a>
|
<a class="sourceLine" id="cb6-4" title="4"></a>
|
||||||
<a class="sourceLine" id="cb5-5" title="5"><span class="co"># send me a test message</span></a>
|
<a class="sourceLine" id="cb6-5" title="5"><span class="co"># send me a test message</span></a>
|
||||||
<a class="sourceLine" id="cb5-6" title="6"><span class="ex">send_message</span> <span class="st">"</span><span class="va">$(</span><span class="ex">getConfigKey</span> <span class="st">"botadmin"</span><span class="va">)</span><span class="st">"</span> <span class="st">"test"</span></a>
|
<a class="sourceLine" id="cb6-6" title="6"><span class="ex">send_message</span> <span class="st">"</span><span class="va">$(</span><span class="ex">getConfigKey</span> <span class="st">"botadmin"</span><span class="va">)</span><span class="st">"</span> <span class="st">"test"</span></a>
|
||||||
<a class="sourceLine" id="cb5-7" title="7"></a>
|
<a class="sourceLine" id="cb6-7" title="7"></a>
|
||||||
<a class="sourceLine" id="cb5-8" title="8"><span class="co"># send me output of a system command</span></a>
|
<a class="sourceLine" id="cb6-8" title="8"><span class="co"># send me output of a system command</span></a>
|
||||||
<a class="sourceLine" id="cb5-9" title="9"><span class="ex">send_message</span> <span class="st">"</span><span class="va">$(</span><span class="ex">getConfigKey</span> <span class="st">"botadmin"</span><span class="va">)</span><span class="st">"</span> <span class="st">"</span><span class="va">$(</span><span class="fu">df</span> -h<span class="va">)</span><span class="st">"</span></a></code></pre></div>
|
<a class="sourceLine" id="cb6-9" title="9"><span class="ex">send_message</span> <span class="st">"</span><span class="va">$(</span><span class="ex">getConfigKey</span> <span class="st">"botadmin"</span><span class="va">)</span><span class="st">"</span> <span class="st">"</span><span class="va">$(</span><span class="fu">df</span> -h<span class="va">)</span><span class="st">"</span></a></code></pre></div>
|
||||||
<p>For more information see <a href="doc/8_custom.md">Expert Use</a></p>
|
<p>For more information see <a href="doc/8_custom.md">Expert Use</a></p>
|
||||||
<h3>Blocked by telegram?</h3>
|
<h3>Blocked by telegram?</h3>
|
||||||
<p>This may happen if to many or wrong requests are sent to api.telegram.org, e.g. using a invalid token or not existing API calls. If the block stay for longer time you can ask telegram service to unblock your IP-Adress.</p>
|
<p>This may happen if to many or wrong requests are sent to api.telegram.org, e.g. using a invalid token or not existing API calls. If the block stay for longer time you can ask telegram service to unblock your IP-Adress.</p>
|
||||||
<p>You can check with curl or wget if you are blocked by Telegram:</p>
|
<p>You can check with curl or wget if you are blocked by Telegram:</p>
|
||||||
<div class="sourceCode" id="cb6"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb6-1" title="1"><span class="ex">curl</span> -m 10 https://api.telegram.org/bot</a>
|
<div class="sourceCode" id="cb7"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb7-1" title="1"><span class="ex">curl</span> -m 10 https://api.telegram.org/bot</a>
|
||||||
<a class="sourceLine" id="cb6-2" title="2"><span class="co">#curl: (28) Connection timed out after 10001 milliseconds</span></a>
|
<a class="sourceLine" id="cb7-2" title="2"><span class="co">#curl: (28) Connection timed out after 10001 milliseconds</span></a>
|
||||||
<a class="sourceLine" id="cb6-3" title="3"></a>
|
<a class="sourceLine" id="cb7-3" title="3"></a>
|
||||||
<a class="sourceLine" id="cb6-4" title="4"><span class="fu">wget</span> -t 1 -T 10 https://api.telegram.org/bot</a>
|
<a class="sourceLine" id="cb7-4" title="4"><span class="fu">wget</span> -t 1 -T 10 https://api.telegram.org/bot</a>
|
||||||
<a class="sourceLine" id="cb6-5" title="5"><span class="co">#Connecting to api.telegram.org (api.telegram.org)|46.38.243.234|:443... failed: Connection timed out.</span></a></code></pre></div>
|
<a class="sourceLine" id="cb7-5" title="5"><span class="co">#Connecting to api.telegram.org (api.telegram.org)|46.38.243.234|:443... failed: Connection timed out.</span></a></code></pre></div>
|
||||||
<p>Since Version 0.96 bashbot offers the option to recover from broken connections (aka blocked). Therefore you can provide a function named <code>bashbotBlockRecover()</code> in <code>mycommands.sh</code>. If the function exists it is called every time when a broken connection is detected.</p>
|
<p>Since Version 0.96 bashbot offers the option to recover from broken connections (aka blocked). Therefore you can provide a function named <code>bashbotBlockRecover()</code> in <code>mycommands.sh</code>. If the function exists it is called every time when a broken connection is detected.</p>
|
||||||
<p>Possible actions are: Check if network is working, change IP-Adress or simply wait some time.</p>
|
<p>Possible actions are: Check if network is working, change IP-Adress or simply wait some time.</p>
|
||||||
<p>If everything seems OK return 0 for retry or any non 0 value to give up.</p>
|
<p>If everything seems OK return 0 for retry or any non 0 value to give up.</p>
|
||||||
<div class="sourceCode" id="cb7"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb7-1" title="1"><span class="co"># called when bashbot sedn command failed because we can not connect to telegram</span></a>
|
<div class="sourceCode" id="cb8"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb8-1" title="1"><span class="co"># called when bashbot sedn command failed because we can not connect to telegram</span></a>
|
||||||
<a class="sourceLine" id="cb7-2" title="2"><span class="co"># return 0 to retry, return non 0 to give up</span></a>
|
<a class="sourceLine" id="cb8-2" title="2"><span class="co"># return 0 to retry, return non 0 to give up</span></a>
|
||||||
<a class="sourceLine" id="cb7-3" title="3"><span class="fu">bashbotBlockRecover()</span> <span class="kw">{</span></a>
|
<a class="sourceLine" id="cb8-3" title="3"><span class="fu">bashbotBlockRecover()</span> <span class="kw">{</span></a>
|
||||||
<a class="sourceLine" id="cb7-4" title="4"> <span class="co"># place your commands to unblock here, e.g. change IP-Adess or simply wait</span></a>
|
<a class="sourceLine" id="cb8-4" title="4"> <span class="co"># place your commands to unblock here, e.g. change IP-Adess or simply wait</span></a>
|
||||||
<a class="sourceLine" id="cb7-5" title="5"> <span class="fu">sleep</span> 60 <span class="kw">&&</span> <span class="bu">return</span> 0 <span class="co"># may be temporary</span></a>
|
<a class="sourceLine" id="cb8-5" title="5"> <span class="fu">sleep</span> 60 <span class="kw">&&</span> <span class="bu">return</span> 0 <span class="co"># may be temporary</span></a>
|
||||||
<a class="sourceLine" id="cb7-6" title="6"> <span class="bu">return</span> 1 </a>
|
<a class="sourceLine" id="cb8-6" title="6"> <span class="bu">return</span> 1 </a>
|
||||||
<a class="sourceLine" id="cb7-7" title="7"> <span class="kw">}</span></a>
|
<a class="sourceLine" id="cb8-7" title="7"> <span class="kw">}</span></a>
|
||||||
<a class="sourceLine" id="cb7-8" title="8"></a></code></pre></div>
|
<a class="sourceLine" id="cb8-8" title="8"></a></code></pre></div>
|
||||||
<p>@Gnadelwartz</p>
|
<p>@Gnadelwartz</p>
|
||||||
<h2>That's it!</h2>
|
<h2>That's it!</h2>
|
||||||
<p>If you feel that there's something missing or if you found a bug, feel free to submit a pull request!</p>
|
<p>If you feel that there's something missing or if you found a bug, feel free to submit a pull request!</p>
|
||||||
<h4>$$VERSION$$ v1.0-18-g9b3d689</h4>
|
<h4>$$VERSION$$ v1.0-21-g6718d24</h4>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
10
README.md
10
README.md
@ -18,6 +18,7 @@ More concrete on the common commands provided by recent versions of [coreutils](
|
|||||||
|
|
||||||
*Note for MacOS and BSD Users:* As bashbot heavily uses modern bash and (gnu) grep/sed features, bashbot will not run without installing additional software, see [Install Bashbot](doc/0_install.md)
|
*Note for MacOS and BSD Users:* As bashbot heavily uses modern bash and (gnu) grep/sed features, bashbot will not run without installing additional software, see [Install Bashbot](doc/0_install.md)
|
||||||
|
|
||||||
|
*Note for emmbedded systems:* busybox or toybox ONLY is not sufficient, you need a to install a "real" bash, see [Install Bashbot](doc/0_install.md)
|
||||||
|
|
||||||
Bashbot [Documentation](https://github.com/topkecleon/telegram-bot-bash) and [Downloads](https://github.com/topkecleon/telegram-bot-bash/releases) are available on www.github.com
|
Bashbot [Documentation](https://github.com/topkecleon/telegram-bot-bash) and [Downloads](https://github.com/topkecleon/telegram-bot-bash/releases) are available on www.github.com
|
||||||
|
|
||||||
@ -74,8 +75,11 @@ If you don't want to register for Telegram you should stop reading here ;-)
|
|||||||
After you're registered to Telegram send a message to [@botfather](https://telegram.me/botfather),
|
After you're registered to Telegram send a message to [@botfather](https://telegram.me/botfather),
|
||||||
[create a new Telegram Bot token](doc/1_firstbot.md) and write it down. You need the token to install the bot.
|
[create a new Telegram Bot token](doc/1_firstbot.md) and write it down. You need the token to install the bot.
|
||||||
|
|
||||||
Now open a terminal and check if bash is installed: ```which bash && echo "bash installed!"```.
|
Now open a terminal and check if bash is installed:
|
||||||
If you get an error message bash is not installed.
|
```
|
||||||
|
which bash && echo "bash seems available..."
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
Create a new directory, change to it: ```mkdir tbb; cd tbb``` and download the latest '*.tar.gz' file from
|
Create a new directory, change to it: ```mkdir tbb; cd tbb``` and download the latest '*.tar.gz' file from
|
||||||
[https://github.com/topkecleon/telegram-bot-bash/releases](https://github.com/topkecleon/telegram-bot-bash/releases). This can be done with the commands:
|
[https://github.com/topkecleon/telegram-bot-bash/releases](https://github.com/topkecleon/telegram-bot-bash/releases). This can be done with the commands:
|
||||||
@ -261,4 +265,4 @@ bashbotBlockRecover() {
|
|||||||
|
|
||||||
If you feel that there's something missing or if you found a bug, feel free to submit a pull request!
|
If you feel that there's something missing or if you found a bug, feel free to submit a pull request!
|
||||||
|
|
||||||
#### $$VERSION$$ v1.0-18-g9b3d689
|
#### $$VERSION$$ v1.0-21-g6718d24
|
||||||
|
12
README.txt
12
README.txt
@ -29,6 +29,8 @@ Notes](doc/7_develop.md#common-commands)
|
|||||||
grep/sed features, bashbot will not run without installing additional software,
|
grep/sed features, bashbot will not run without installing additional software,
|
||||||
see [Install Bashbot](doc/0_install.md)
|
see [Install Bashbot](doc/0_install.md)
|
||||||
|
|
||||||
|
*Note for emmbedded systems:* busybox or toybox ONLY is not sufficient, you
|
||||||
|
need a to install a "real" bash, see [Install Bashbot](doc/0_install.md)
|
||||||
|
|
||||||
Bashbot [Documentation](https://github.com/topkecleon/telegram-bot-bash) and
|
Bashbot [Documentation](https://github.com/topkecleon/telegram-bot-bash) and
|
||||||
[Downloads](https://github.com/topkecleon/telegram-bot-bash/releases) are
|
[Downloads](https://github.com/topkecleon/telegram-bot-bash/releases) are
|
||||||
@ -93,9 +95,11 @@ After you're registered to Telegram send a message to
|
|||||||
[create a new Telegram Bot token](doc/1_firstbot.md) and write it down. You
|
[create a new Telegram Bot token](doc/1_firstbot.md) and write it down. You
|
||||||
need the token to install the bot.
|
need the token to install the bot.
|
||||||
|
|
||||||
Now open a terminal and check if bash is installed: ```which bash && echo "bash
|
Now open a terminal and check if bash is installed:
|
||||||
installed!"```.
|
```
|
||||||
If you get an error message bash is not installed.
|
which bash && echo "bash seems available..."
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
Create a new directory, change to it: ```mkdir tbb; cd tbb``` and download the
|
Create a new directory, change to it: ```mkdir tbb; cd tbb``` and download the
|
||||||
latest '*.tar.gz' file from
|
latest '*.tar.gz' file from
|
||||||
@ -351,4 +355,4 @@ wait
|
|||||||
If you feel that there's something missing or if you found a bug, feel free to
|
If you feel that there's something missing or if you found a bug, feel free to
|
||||||
submit a pull request!
|
submit a pull request!
|
||||||
|
|
||||||
#### $$VERSION$$ v1.0-18-g9b3d689
|
#### $$VERSION$$ v1.0-21-g6718d24
|
||||||
|
15
bashbot.sh
15
bashbot.sh
@ -11,7 +11,7 @@
|
|||||||
# This file is public domain in the USA and all free countries.
|
# This file is public domain in the USA and all free countries.
|
||||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.0-18-g9b3d689
|
#### $$VERSION$$ v1.0-21-g6718d24
|
||||||
#
|
#
|
||||||
# Exit Codes:
|
# Exit Codes:
|
||||||
# - 0 success (hopefully)
|
# - 0 success (hopefully)
|
||||||
@ -22,8 +22,16 @@
|
|||||||
# - 5 cannot connect to telegram bot
|
# - 5 cannot connect to telegram bot
|
||||||
# - 6 mandatory module not found
|
# - 6 mandatory module not found
|
||||||
# - 6 can't get bottoken
|
# - 6 can't get bottoken
|
||||||
|
# - 10 not bash!
|
||||||
# shellcheck disable=SC2140,SC2031,SC2120,SC1091
|
# shellcheck disable=SC2140,SC2031,SC2120,SC1091
|
||||||
|
|
||||||
|
# emmbeded system may claim bash but it is not
|
||||||
|
# check for bash like ARRAY handlung
|
||||||
|
if ! (unset a; set -A a a; eval "a=(a b)"; eval '[ -n "${a[1]}" ]'; ) > /dev/null 2>&1; then
|
||||||
|
echo "iError: Current shell does not support ARRAY's, may be busbox ash shell. pls install a real bash!";
|
||||||
|
exit 10
|
||||||
|
fi
|
||||||
|
|
||||||
# are we running in a terminal?
|
# are we running in a terminal?
|
||||||
if [ -t 1 ] && [ -n "$TERM" ]; then
|
if [ -t 1 ] && [ -n "$TERM" ]; then
|
||||||
CLEAR='clear'
|
CLEAR='clear'
|
||||||
@ -34,6 +42,11 @@ if [ -t 1 ] && [ -n "$TERM" ]; then
|
|||||||
NC='\e[0m'
|
NC='\e[0m'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# we need some bash 4+ features, check for old bash by feature
|
||||||
|
if [ "$(echo -e "\u1111")" == "\u1111" ]; then
|
||||||
|
echo -e "${ORANGE}Warning: Unicode '\uxxxx' seems not supported, install a more current bash.${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
# some important helper functions
|
# some important helper functions
|
||||||
# returns true if command exist
|
# returns true if command exist
|
||||||
_exists() {
|
_exists() {
|
||||||
|
@ -1,5 +1,21 @@
|
|||||||
#### [Home](../README.md)
|
#### [Home](../README.md)
|
||||||
|
|
||||||
|
## Check bash installation
|
||||||
|
|
||||||
|
There may be systems where bash seems to be installed but it is not, e.g. emmbedded systems, or the bash version is to old.
|
||||||
|
Run the following commands to see if your bash looks ok ...
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# does the system say bash is there?
|
||||||
|
which bash && echo "bash seems available..."
|
||||||
|
|
||||||
|
# real bash supports ARRAY
|
||||||
|
bash -c 'eval "a=(1)" && echo "Shell supports ARRAY..."'
|
||||||
|
|
||||||
|
# check for ok version by feature
|
||||||
|
[ "$(echo "\u1111")" == "\u1111" ] && echo "Bash version may to old..."
|
||||||
|
```
|
||||||
|
|
||||||
## Install bashbot
|
## Install bashbot
|
||||||
|
|
||||||
1. Go to the directory you want to install bashbot, e.g.
|
1. Go to the directory you want to install bashbot, e.g.
|
||||||
@ -153,5 +169,5 @@ The old format is supported for backward compatibility, but may fail for corner
|
|||||||
|
|
||||||
#### [Next Create Bot](1_firstbot.md)
|
#### [Next Create Bot](1_firstbot.md)
|
||||||
|
|
||||||
#### $$VERSION$$ v1.0-20-gc292292
|
#### $$VERSION$$ v1.0-21-g6718d24
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user