<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Comunidad Gambas-es - Bash]]></title>
		<link>https://gambas-es.org/</link>
		<description><![CDATA[Comunidad Gambas-es - https://gambas-es.org]]></description>
		<pubDate>Tue, 26 May 2026 11:08:56 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[SSHFS - Montando directorios remotos con Bash]]></title>
			<link>https://gambas-es.org/thread-607.html</link>
			<pubDate>Wed, 15 Sep 2021 19:44:52 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://gambas-es.org/member.php?action=profile&uid=12">tincho</a>]]></dc:creator>
			<guid isPermaLink="false">https://gambas-es.org/thread-607.html</guid>
			<description><![CDATA[Hola amigos.<br />
En el marco del proyecto intriga en el que estoy buscando algunas informaciones encontré un script que me parece muy interesante así que aquí, sin mas, se los comparto.<br />
<a href="https://whattheserver.com/keep-your-sshfs-mounts-mounted/" target="_blank" rel="noopener" class="mycode_url">https://whattheserver.com/keep-your-sshf...s-mounted/</a><br />
Para automatizar la conexiones con el protocolo SSHFS<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>#!/bin/bash<br />
## Author: Michael Ramsey<br />
## Objective: Check and ensure a remote sshfs mount is mounted. This script assumes you have already have ssh passwordless keypair setup for accessing the remote sshfs mount point.<br />
<br />
## How to use.<br />
# Set the below variables to match your needs first.<br />
<br />
# Then the below script can be run manually or via a cronjob<br />
# sh check_remote_mount.sh<br />
<br />
#example cronjob path to the script may need to be updated depending on where it was saved.<br />
# * * * * * /bin/bash /root/check_remote_mount.sh &gt; /dev/null<br />
<br />
##### User specific variables to edit<br />
#Set local mount directory<br />
mountdir="/mnt/backup"<br />
<br />
#Remote mount directory<br />
remotemountdir="/root/server-backups"<br />
<br />
#Set file name to test for in the remote mount directory. Just create an empty file "is_mounted" in the remote mount so we can check if it exists.<br />
remotemounttestfile="/mnt/backup/is_mounted"<br />
<br />
#Remote hostname or IP<br />
remotehost="something.example.com"<br />
<br />
#Remote ssh username<br />
remoteuser="root"<br />
<br />
#SSH IdentityFile path. Please Note: This would be the key like "/root/.ssh/id_rsa" not the pub file "/root/.ssh/id_rsa.pub"<br />
sshIdentityFile="/root/.ssh/id_rsa"<br />
<br />
#### Do not edit below this line<br />
<br />
if mountpoint &#36;mountdir &amp;&amp; [ -f &#36;remotemounttestfile ]; then<br />
    echo "Mounted"<br />
    RC=&#36;?<br />
else<br />
   echo "Not mounted properly"<br />
   #umount gracefully if possible<br />
   umount &#36;mountdir  &gt; /dev/null 2&gt;&amp;1<br />
<br />
   #kill any frozen process on the mount<br />
   fuser -k &#36;mountdir  &gt; /dev/null 2&gt;&amp;1<br />
   fusermount -u &#36;mountdir  &gt; /dev/null 2&gt;&amp;1<br />
   umount -l &#36;mountdir  &gt; /dev/null 2&gt;&amp;1<br />
   umount &#36;mountdir  &gt; /dev/null 2&gt;&amp;1<br />
<br />
   #kill any hung processes and mounts<br />
   pkill -9 sshfs &amp;&amp; umount "&#36;mountdir"  &gt; /dev/null 2&gt;&amp;1<br />
<br />
   #remount backup server<br />
   rm -rf "&#36;{mountdir:?}/"* &amp;&amp; sshfs -o nonempty,allow_other,IdentityFile=&#36;sshIdentityFile &#36;remoteuser@&#36;remotehost:&#36;remotemountdir &#36;mountdir<br />
<br />
   if mountpoint &#36;mountdir &amp;&amp; [ -f &#36;remotemounttestfile ]; then<br />
    echo "Mounted"<br />
    RC=&#36;?<br />
   else<br />
   echo "Not mounted properly needs fixed manually"<br />
   RC=1<br />
   fi<br />
fi<br />
exit &#36;RC</code></div></div><br />
Saludos.]]></description>
			<content:encoded><![CDATA[Hola amigos.<br />
En el marco del proyecto intriga en el que estoy buscando algunas informaciones encontré un script que me parece muy interesante así que aquí, sin mas, se los comparto.<br />
<a href="https://whattheserver.com/keep-your-sshfs-mounts-mounted/" target="_blank" rel="noopener" class="mycode_url">https://whattheserver.com/keep-your-sshf...s-mounted/</a><br />
Para automatizar la conexiones con el protocolo SSHFS<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>#!/bin/bash<br />
## Author: Michael Ramsey<br />
## Objective: Check and ensure a remote sshfs mount is mounted. This script assumes you have already have ssh passwordless keypair setup for accessing the remote sshfs mount point.<br />
<br />
## How to use.<br />
# Set the below variables to match your needs first.<br />
<br />
# Then the below script can be run manually or via a cronjob<br />
# sh check_remote_mount.sh<br />
<br />
#example cronjob path to the script may need to be updated depending on where it was saved.<br />
# * * * * * /bin/bash /root/check_remote_mount.sh &gt; /dev/null<br />
<br />
##### User specific variables to edit<br />
#Set local mount directory<br />
mountdir="/mnt/backup"<br />
<br />
#Remote mount directory<br />
remotemountdir="/root/server-backups"<br />
<br />
#Set file name to test for in the remote mount directory. Just create an empty file "is_mounted" in the remote mount so we can check if it exists.<br />
remotemounttestfile="/mnt/backup/is_mounted"<br />
<br />
#Remote hostname or IP<br />
remotehost="something.example.com"<br />
<br />
#Remote ssh username<br />
remoteuser="root"<br />
<br />
#SSH IdentityFile path. Please Note: This would be the key like "/root/.ssh/id_rsa" not the pub file "/root/.ssh/id_rsa.pub"<br />
sshIdentityFile="/root/.ssh/id_rsa"<br />
<br />
#### Do not edit below this line<br />
<br />
if mountpoint &#36;mountdir &amp;&amp; [ -f &#36;remotemounttestfile ]; then<br />
    echo "Mounted"<br />
    RC=&#36;?<br />
else<br />
   echo "Not mounted properly"<br />
   #umount gracefully if possible<br />
   umount &#36;mountdir  &gt; /dev/null 2&gt;&amp;1<br />
<br />
   #kill any frozen process on the mount<br />
   fuser -k &#36;mountdir  &gt; /dev/null 2&gt;&amp;1<br />
   fusermount -u &#36;mountdir  &gt; /dev/null 2&gt;&amp;1<br />
   umount -l &#36;mountdir  &gt; /dev/null 2&gt;&amp;1<br />
   umount &#36;mountdir  &gt; /dev/null 2&gt;&amp;1<br />
<br />
   #kill any hung processes and mounts<br />
   pkill -9 sshfs &amp;&amp; umount "&#36;mountdir"  &gt; /dev/null 2&gt;&amp;1<br />
<br />
   #remount backup server<br />
   rm -rf "&#36;{mountdir:?}/"* &amp;&amp; sshfs -o nonempty,allow_other,IdentityFile=&#36;sshIdentityFile &#36;remoteuser@&#36;remotehost:&#36;remotemountdir &#36;mountdir<br />
<br />
   if mountpoint &#36;mountdir &amp;&amp; [ -f &#36;remotemounttestfile ]; then<br />
    echo "Mounted"<br />
    RC=&#36;?<br />
   else<br />
   echo "Not mounted properly needs fixed manually"<br />
   RC=1<br />
   fi<br />
fi<br />
exit &#36;RC</code></div></div><br />
Saludos.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Empaquetando un directorio]]></title>
			<link>https://gambas-es.org/thread-225.html</link>
			<pubDate>Wed, 30 Dec 2020 22:44:03 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://gambas-es.org/member.php?action=profile&uid=3">Shell</a>]]></dc:creator>
			<guid isPermaLink="false">https://gambas-es.org/thread-225.html</guid>
			<description><![CDATA[Buenas!.<br />
<br />
Quiero empaquetar el directorio "programación" por completo y crear el archivo en un directorio concreto. No necesito comprimirlo.<br />
<br />
He usado esto:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>tar cvf /media/mi_usuario/directorio_destino/programacion.tar Programacion</code></div></div>¿ Cómo puedo asegurarme de que el archivo tar creado contiene "todo" el contenido del directorio Programación ?.<br />
Si quiero contar archivos y directorios del directorio Programación, se puede hacer así.<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>find . | wc -l</code></div></div><br />
El resultado es entre directorios y archivos: <span style="font-weight: bold;" class="mycode_b">89612</span><br />
<br />
Para listar el contenido de un archivo tar en este caso puedo hacer esto:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>tar tvf  programacion.tar</code></div></div><br />
Como la lista de archivo se muestra sin líneas vacías al igual que hace el comando find. Para contar cada una de las líneas que muestra la instrucción anterior puedo hacer:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>tar tvf  programacion.tar | wc -l</code></div></div><br />
Pero observo que me cuenta: <span style="font-weight: bold;" class="mycode_b">89606</span><br />
<br />
Hay una diferencia de "seis".  ¿ A que puede ser debido ?. ¿ Es una forma correcta ?.<br />
<br />
Saludos<br />
<hr class="mycode_hr" />
Puedo contar los tipos por separados del directorio Programación:<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Contar solo los tipo archivos:</span><br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>find . -type f | wc -l</code></div></div><br />
Me da: <span style="font-weight: bold;" class="mycode_b">68665</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Contar solo los tipo directorios</span>:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>find . -type d | wc -l</code></div></div><br />
Me da: <span style="font-weight: bold;" class="mycode_b">20922</span><br />
<br />
Total directorios y archivos: <span style="font-weight: bold;" class="mycode_b">68665 + 20922 = 89587</span><br />
<br />
Que tampoco tiene que ver con: <span style="font-weight: bold;" class="mycode_b">89612</span><br />
<br />
Se come 25... <img src="https://gambas-es.org/images/smilies/huh.png" alt="Huh" title="Huh" class="smilie smilie_17" /><br />
<br />
En cuanto a si quiero saber cuantos directorios me muestra la salida del tar con las opciones tvf.<br />
Me muestra el mismo número de directorios usando:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>tar tvf programacion.tar | grep "^d" | wc -l</code></div></div><br />
Ale que es tarde y casi es fin de año.. en que cosas me distraigo. <img src="https://gambas-es.org/images/smilies/biggrin.png" alt="Big Grin" title="Big Grin" class="smilie smilie_4" /><br />
<br />
Saludos]]></description>
			<content:encoded><![CDATA[Buenas!.<br />
<br />
Quiero empaquetar el directorio "programación" por completo y crear el archivo en un directorio concreto. No necesito comprimirlo.<br />
<br />
He usado esto:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>tar cvf /media/mi_usuario/directorio_destino/programacion.tar Programacion</code></div></div>¿ Cómo puedo asegurarme de que el archivo tar creado contiene "todo" el contenido del directorio Programación ?.<br />
Si quiero contar archivos y directorios del directorio Programación, se puede hacer así.<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>find . | wc -l</code></div></div><br />
El resultado es entre directorios y archivos: <span style="font-weight: bold;" class="mycode_b">89612</span><br />
<br />
Para listar el contenido de un archivo tar en este caso puedo hacer esto:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>tar tvf  programacion.tar</code></div></div><br />
Como la lista de archivo se muestra sin líneas vacías al igual que hace el comando find. Para contar cada una de las líneas que muestra la instrucción anterior puedo hacer:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>tar tvf  programacion.tar | wc -l</code></div></div><br />
Pero observo que me cuenta: <span style="font-weight: bold;" class="mycode_b">89606</span><br />
<br />
Hay una diferencia de "seis".  ¿ A que puede ser debido ?. ¿ Es una forma correcta ?.<br />
<br />
Saludos<br />
<hr class="mycode_hr" />
Puedo contar los tipos por separados del directorio Programación:<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Contar solo los tipo archivos:</span><br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>find . -type f | wc -l</code></div></div><br />
Me da: <span style="font-weight: bold;" class="mycode_b">68665</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Contar solo los tipo directorios</span>:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>find . -type d | wc -l</code></div></div><br />
Me da: <span style="font-weight: bold;" class="mycode_b">20922</span><br />
<br />
Total directorios y archivos: <span style="font-weight: bold;" class="mycode_b">68665 + 20922 = 89587</span><br />
<br />
Que tampoco tiene que ver con: <span style="font-weight: bold;" class="mycode_b">89612</span><br />
<br />
Se come 25... <img src="https://gambas-es.org/images/smilies/huh.png" alt="Huh" title="Huh" class="smilie smilie_17" /><br />
<br />
En cuanto a si quiero saber cuantos directorios me muestra la salida del tar con las opciones tvf.<br />
Me muestra el mismo número de directorios usando:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>tar tvf programacion.tar | grep "^d" | wc -l</code></div></div><br />
Ale que es tarde y casi es fin de año.. en que cosas me distraigo. <img src="https://gambas-es.org/images/smilies/biggrin.png" alt="Big Grin" title="Big Grin" class="smilie smilie_4" /><br />
<br />
Saludos]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Instalar LibreDWG en el sistema]]></title>
			<link>https://gambas-es.org/thread-151.html</link>
			<pubDate>Tue, 20 Oct 2020 20:28:07 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://gambas-es.org/member.php?action=profile&uid=12">tincho</a>]]></dc:creator>
			<guid isPermaLink="false">https://gambas-es.org/thread-151.html</guid>
			<description><![CDATA[Hola a todos.<br />
Por si a alguien le interesa dejo aquí un script bash que sirve para instalar la librería LibreDWG en el sistema. Esta es la que estamos implementando en GauchoCAD para leer archivos DWG pero de momento a través de la shell.<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>#!/bin/bash<br />
# Script para instalar LibreDWG en el sistema<br />
#===============================================================================<br />
# LibDWG<br />
git clone git://git.sv.gnu.org/libredwg.git<br />
cd libredwg<br />
sh autogen.sh<br />
./configure --enable-trace<br />
make<br />
sudo make install<br />
make check<br />
cd ..</code></div></div>Saludos.]]></description>
			<content:encoded><![CDATA[Hola a todos.<br />
Por si a alguien le interesa dejo aquí un script bash que sirve para instalar la librería LibreDWG en el sistema. Esta es la que estamos implementando en GauchoCAD para leer archivos DWG pero de momento a través de la shell.<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>#!/bin/bash<br />
# Script para instalar LibreDWG en el sistema<br />
#===============================================================================<br />
# LibDWG<br />
git clone git://git.sv.gnu.org/libredwg.git<br />
cd libredwg<br />
sh autogen.sh<br />
./configure --enable-trace<br />
make<br />
sudo make install<br />
make check<br />
cd ..</code></div></div>Saludos.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Como extraer el contenido de un tar.bz]]></title>
			<link>https://gambas-es.org/thread-78.html</link>
			<pubDate>Wed, 19 Aug 2020 11:53:56 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://gambas-es.org/member.php?action=profile&uid=12">tincho</a>]]></dc:creator>
			<guid isPermaLink="false">https://gambas-es.org/thread-78.html</guid>
			<description><![CDATA[Hola a todos.<br />
Dado el archivo adjuntado <span style="font-weight: bold;" class="mycode_b">ejemplo-me-controls-0.0.1.tar.gz</span> donde este contiene un subdirectorio /<span style="font-weight: bold;" class="mycode_b">ejemplo-me-controls</span><br />
Alguien podría decirme como extraer el contenido de <span style="font-weight: bold;" class="mycode_b">ejemplo-me-controls</span> en un directorio especifico<br />
De momneto uso esto<br />
<span style="font-weight: bold;" class="mycode_b">tar -xjf ejemplo-me-controls-0.0.1.tar.gz -C /destino/newdir</span><br />
Pero el resultado es<br />
<span style="font-weight: bold;" class="mycode_b">/destino/newdir/ejemplo-me-controls/*</span><br />
y lo que busco es:<br />
<span style="font-weight: bold;" class="mycode_b">/destino/newdir/*</span><br />
Sin "<span style="font-weight: bold;" class="mycode_b">ejemplo-me-controls"</span><br />
<img src="https://i.imgur.com/4yDthpq.png" loading="lazy"  alt="[Imagen: 4yDthpq.png]" class="mycode_img" /><img src="https://i.imgur.com/cg1iRDJ.png" loading="lazy"  alt="[Imagen: cg1iRDJ.png]" class="mycode_img" /><br />
Nota: Obviamente sabiendo los nombres del subdirectorio bastaría con usar el comando <span style="font-weight: bold;" class="mycode_b">mv</span> pero este cambia para cada programa.<br />
Saludos.<br /><!-- start: postbit_attachments_attachment -->
<div class="row mt-2 g-1 text-muted">
	<div class="col-auto align-self-center">

<!-- start: attachment_icon -->
<img src="https://gambas-es.org/images/attachtypes/tar.png" title="GZIP Compressed File" style="height: 16px; width: 16px" border="0" alt=".gz" />
<!-- end: attachment_icon -->
		
	</div>
	<div class="col align-self-center">
		<a href="attachment.php?aid=14" target="_blank" title="">ejemplo-me-controls-0.0.1.tar.gz</a> (Tamaño: <span class="text-dark">11.7 KB</span> Descargas: <span class="text-dark">2)</span>
	</div>
</div>
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[Hola a todos.<br />
Dado el archivo adjuntado <span style="font-weight: bold;" class="mycode_b">ejemplo-me-controls-0.0.1.tar.gz</span> donde este contiene un subdirectorio /<span style="font-weight: bold;" class="mycode_b">ejemplo-me-controls</span><br />
Alguien podría decirme como extraer el contenido de <span style="font-weight: bold;" class="mycode_b">ejemplo-me-controls</span> en un directorio especifico<br />
De momneto uso esto<br />
<span style="font-weight: bold;" class="mycode_b">tar -xjf ejemplo-me-controls-0.0.1.tar.gz -C /destino/newdir</span><br />
Pero el resultado es<br />
<span style="font-weight: bold;" class="mycode_b">/destino/newdir/ejemplo-me-controls/*</span><br />
y lo que busco es:<br />
<span style="font-weight: bold;" class="mycode_b">/destino/newdir/*</span><br />
Sin "<span style="font-weight: bold;" class="mycode_b">ejemplo-me-controls"</span><br />
<img src="https://i.imgur.com/4yDthpq.png" loading="lazy"  alt="[Imagen: 4yDthpq.png]" class="mycode_img" /><img src="https://i.imgur.com/cg1iRDJ.png" loading="lazy"  alt="[Imagen: cg1iRDJ.png]" class="mycode_img" /><br />
Nota: Obviamente sabiendo los nombres del subdirectorio bastaría con usar el comando <span style="font-weight: bold;" class="mycode_b">mv</span> pero este cambia para cada programa.<br />
Saludos.<br /><!-- start: postbit_attachments_attachment -->
<div class="row mt-2 g-1 text-muted">
	<div class="col-auto align-self-center">

<!-- start: attachment_icon -->
<img src="https://gambas-es.org/images/attachtypes/tar.png" title="GZIP Compressed File" style="height: 16px; width: 16px" border="0" alt=".gz" />
<!-- end: attachment_icon -->
		
	</div>
	<div class="col align-self-center">
		<a href="attachment.php?aid=14" target="_blank" title="">ejemplo-me-controls-0.0.1.tar.gz</a> (Tamaño: <span class="text-dark">11.7 KB</span> Descargas: <span class="text-dark">2)</span>
	</div>
</div>
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
	</channel>
</rss>