  
<div id="snippet_226" class="snippet">
  <h2><a href="/snippets/226-Using-expect-for-automation-of-bulk-scp-copying-" title="Using expect for automation of bulk scp copying. - Shell Script (Bash) - expect, bash, automation, scp, bulk">Using expect for automation of bulk scp copying.</a></h2>
  <div class="details">
    <a style="background-color: #FFFF94;" href="http://snippets.aktagon.com/languages/131-Shell-Script-Bash-">
      Shell Script (Bash)</a> posted about 1 year ago by marko
          
  </div>

  <div class="body">
    <p>Expect can come in handy when you can&#8217;t configure ssh public key authentication on the servers :) (and the system &#8220;architect&#8221; hasn&#8217;t yet realized the wonderfulness of a log host).</p>


	<p><pre class="active4d"><span class="line-numbers">   1 </span> <span class="LineComment"><span class="LineComment">#</span>!/bin/bash</span>
<span class="line-numbers">   2 </span> <span class="LineComment"><span class="LineComment">#</span></span>
<span class="line-numbers">   3 </span> <span class="LineComment"><span class="LineComment">#</span> Usage: script &lt;username&gt; &lt;password&gt; &lt;build&gt;</span>
<span class="line-numbers">   4 </span> <span class="LineComment"><span class="LineComment">#</span></span>
<span class="line-numbers">   5 </span> <span class="LineComment"><span class="LineComment">#</span> Example ./copy_logs_from_production.sh marko hubbabubba current</span>
<span class="line-numbers">   6 </span> <span class="LineComment"><span class="LineComment">#</span></span>
<span class="line-numbers">   7 </span> 
<span class="line-numbers">   8 </span> username=<span class="Variable"><span class="Variable">$</span>1</span>
<span class="line-numbers">   9 </span> password=<span class="Variable"><span class="Variable">$</span>2</span>
<span class="line-numbers">  10 </span> build=<span class="Variable"><span class="Variable">$</span>3</span>
<span class="line-numbers">  11 </span> mkdir <span class="Variable"><span class="Variable">$</span>build</span>
<span class="line-numbers">  12 </span> 
<span class="line-numbers">  13 </span> instance_1_server=10.0.0.1
<span class="line-numbers">  14 </span> instance_2_server=10.0.0.1
<span class="line-numbers">  15 </span> instance_3_server=10.0.0.2
<span class="line-numbers">  16 </span> instance_4_server=10.0.0.2
<span class="line-numbers">  17 </span> instance_5_server=10.0.0.3
<span class="line-numbers">  18 </span> instance_6_server=10.0.0.3
<span class="line-numbers">  19 </span> instance_7_server=10.0.0.4
<span class="line-numbers">  20 </span> instance_8_server=10.0.0.4
<span class="line-numbers">  21 </span> instance_9_server=10.0.0.5
<span class="line-numbers">  22 </span> 
<span class="line-numbers">  23 </span> servers=(<span class="String"><span class="String">&quot;</span><span class="Variable"><span class="Variable">$</span>instance_1_server</span><span class="String">&quot;</span></span> <span class="String"><span class="String">&quot;</span><span class="Variable"><span class="Variable">$</span>instance_2_server</span><span class="String">&quot;</span></span> <span class="String"><span class="String">&quot;</span><span class="Variable"><span class="Variable">$</span>instance_3_server</span><span class="String">&quot;</span></span> <span class="String"><span class="String">&quot;</span><span class="Variable"><span class="Variable">$</span>instance_4_server</span><span class="String">&quot;</span></span> <span class="String"><span class="String">&quot;</span><span class="Variable"><span class="Variable">$</span>instance_5_server</span><span class="String">&quot;</span></span> <span class="String"><span class="String">&quot;</span><span class="Variable"><span class="Variable">$</span>instance_6_server</span><span class="String">&quot;</span></span> <span class="String"><span class="String">&quot;</span><span class="Variable"><span class="Variable">$</span>instance_7_server</span><span class="String">&quot;</span></span> <span class="String"><span class="String">&quot;</span><span class="Variable"><span class="Variable">$</span>instance_8_server</span><span class="String">&quot;</span></span> <span class="String"><span class="String">&quot;</span><span class="Variable"><span class="Variable">$</span>instance_9_server</span><span class="String">&quot;</span></span> )
<span class="line-numbers">  24 </span> i=1
<span class="line-numbers">  25 </span> <span class="Keyword">for</span> server <span class="Keyword">in</span> <span class="Variable"><span class="Variable">${</span>servers[@]<span class="Variable">}</span></span><span class="Operator">;</span> <span class="Keyword">do</span>
<span class="line-numbers">  26 </span>   expect -c <span class="String"><span class="String">&quot;</span></span>
<span class="line-numbers">  27 </span> <span class="String">            # exp_internal 1 # uncomment for debugging</span>
<span class="line-numbers">  28 </span> <span class="String">            spawn /usr/bin/scp <span class="Variable"><span class="Variable">$</span>username</span>@<span class="Variable"><span class="Variable">$</span>server</span>:/var/logs/application/<span class="Variable"><span class="Variable">$</span>build</span>/server<span class="Variable"><span class="Variable">${</span>i<span class="Variable">}</span></span>/error.log <span class="Variable"><span class="Variable">$</span>build</span>/error-<span class="Variable"><span class="Variable">${</span>i<span class="Variable">}</span></span>.log</span>
<span class="line-numbers">  29 </span> <span class="String">            expect { </span>
<span class="line-numbers">  30 </span> <span class="String">              <span class="String">&quot;</span></span>*password:*<span class="String"><span class="String">&quot;</span> { send <span class="Variable"><span class="Variable">$</span>password</span>\r\n; interact } </span>
<span class="line-numbers">  31 </span> <span class="String">              eof { exit }</span>
<span class="line-numbers">  32 </span> <span class="String">            }</span>
<span class="line-numbers">  33 </span> <span class="String">            exit</span>
<span class="line-numbers">  34 </span> <span class="String">            <span class="String">&quot;</span></span>
<span class="line-numbers">  35 </span>   let <span class="String"><span class="String">&quot;</span>i=i+1<span class="String">&quot;</span></span>
<span class="line-numbers">  36 </span> <span class="Keyword">done</span>
<span class="line-numbers">  37 </span> 
</pre></p>
  </div>

  <div style="font-size: 0.8em;margin:0.5em;">
    
      Tagged <a href="/tags/523-expect">expect</a>, <a href="/tags/19-bash">bash</a>, <a href="/tags/524-automation">automation</a>, <a href="/tags/137-scp">scp</a>, <a href="/tags/17-bulk">bulk</a>
    
    
  </div>
</div>



  
<div id="snippet_21" class="snippet">
  <h2><a href="/snippets/21-Delete-messages-containing-a-keyword-in-mutt" title="Delete messages containing a keyword in mutt - Shell Script (Bash) - mutt, mail, bulk, delete">Delete messages containing a keyword in mutt</a></h2>
  <div class="details">
    <a style="background-color: #FFFF94;" href="http://snippets.aktagon.com/languages/131-Shell-Script-Bash-">
      Shell Script (Bash)</a> posted over 2 years ago by marko
          
  </div>

  <div class="body">
    <p>Bulk operations in mutt, a console based email client, are easy. Here&#8217;s how to delete messages containing the keyword &#8216;Newsletter&#8217;.
<pre class="active4d"><span class="line-numbers">   1 </span> T
<span class="line-numbers">   2 </span> Newsletter
<span class="line-numbers">   3 </span> <span class="Operator">;</span>
<span class="line-numbers">   4 </span> d
<span class="line-numbers">   5 </span> $
</pre>
T &#8211; asks which messages you want to tag and you reply with &#8216;Newsletter&#8217;.</p>


	<p>; &#8211; asks which action you want to run on the tagged messages.</p>


	<p>d &#8211; tells that the action you want is delete.</p>


	<p>$ &#8211; synchronizes the view with the underlying persistence layer.</p>
  </div>

  <div style="font-size: 0.8em;margin:0.5em;">
    
      Tagged <a href="/tags/74-mutt">mutt</a>, <a href="/tags/75-mail">mail</a>, <a href="/tags/17-bulk">bulk</a>, <a href="/tags/76-delete">delete</a>
    
    
  </div>
</div>



  
<div id="snippet_4" class="snippet">
  <h2><a href="/snippets/4-Bulk-renaming-of-files" title="Bulk renaming of files - Shell Script (Bash) - rename, regexp, bulk, filename, bash, perl, linux">Bulk renaming of files</a></h2>
  <div class="details">
    <a style="background-color: #FFFF94;" href="http://snippets.aktagon.com/languages/131-Shell-Script-Bash-">
      Shell Script (Bash)</a> posted over 2 years ago by marko
          
  </div>

  <div class="body">
    <p>Rename the files in a directory by replacing a space with an underscore. The rename program comes with most modern Linux distros.
<pre class="active4d"><span class="line-numbers">   1 </span> rename <span class="String"><span class="String">'</span>s/\ /_/g<span class="String">'</span></span> *.*
</pre></p>
  </div>

  <div style="font-size: 0.8em;margin:0.5em;">
    
      Tagged <a href="/tags/15-rename">rename</a>, <a href="/tags/16-regexp">regexp</a>, <a href="/tags/17-bulk">bulk</a>, <a href="/tags/18-filename">filename</a>, <a href="/tags/19-bash">bash</a>, <a href="/tags/20-perl">perl</a>, <a href="/tags/37-linux">linux</a>
    
    
  </div>
</div>






