Gå til innhold

Legg inn dine nyttige bash script/programmer her!


Gjest Slettet+432

Anbefalte innlegg

Gjest Slettet+432

Halla folks..

 

Her kan dere legge inn nyttige bash script og programmer som dere har laget selv, eller har funnet, samme det :)

 

 

Legger ved koden til et slags backupscript som komprimerer hjemmemappen (laget for OS X, er bare å endre noen baner så funker den på GNU/Linux). Så sender den den komprimerte filen til min rsync server, og etter det sletter den den komprimerte filen fra den lokale maskinen.

 

#! /bin/bash
# Backupscript laget av _RebooT_
# whatever.... gitt ut under GPL.... 

# Komprimerer sikkerhetskopi med tar
echo Komprimerer sikkerhetskopi med tar...
tar -czf aleksander.`date +%a`.tgz /Users/aleksander/*

# Sender komprimerte filer og mapper til rsync serveren med rsync klienten...

echo Sender hjemmemappen din til rsync serveren...
rsync -alW --delete --stats aleksander.`date +%a`.tgz sysfile::aleksander

echo Filene er naa overfort til sysfile.

# Slette komprimert fil etter overforing

echo Sletter filen som ble sendt...
rm -rf aleksander.`date +%a`.tgz

 

Merk: For at man skal kunne skrive sysfile::aleksander (rsync) istedenfor 192.168.1.8::aleksander så må man legge til 192.168.1.8 som sysfile (i mitt tilfelle) i /etc/hosts

 

Og forresten, jeg suger i bash, så bare rett på scriptet mitt om det er noe galt der :)

Endret av Slettet+432
Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+432

Hehe, litt ironisk det med copyright, ja :) hehe. Måtte bare se hva dere sa ;) Gjør hva dere vil med det.

 

Arntfinn: Ja, det gir navnet på ukedagen. Men tingen er at den greia kjøres uansett samme dag som hjemmemappa ble komprimert, siden det skjer i samme scriptet...

Lenke til kommentar

Bash & perl script for å pinge en host som en vet er oppe (og tillater ping) og evt. fornye gatewayen sin internett lease. Nyttige scripts for oss late studenter på SiO hybler med unix maskiner som ikke orker/gidder å telnet'e inn til gatewayen hver N'te dag for å fornye internett forbindelsen :D

 

telnet.sh

#!/bin/sh

#Del 1 av 2

perl=/usr/bin/perl
telnet_script=/home/vecna/telnet.pl
log=/home/vecna/telnet.log

ping -c2 $1 > /dev/null

#Sjekk om ping packet loss er 100%
if [ $? -gt 0 ]

       then {
               echo Gateway auth forsøk @ `/bin/date` >> $log
               $perl $telnet_script
       }
fi

 

 

telnet.pl Scriptet bruker pakken Net::Telnet, kan installeres ved å kjøre perl -MCPAN -e "install Net::Telnet"

#Del 2 av 2
#Telnet inn til gatwayen for å fornye internett leasen

$log = /home/vecna/telnet.dump

use Net::Telnet;
 $gateway = new Net::Telnet ( Timeout=>30,
                             Dump_Log => "$log",
                             Errmode=>'die');
 $gateway->open('GATEWAY_IP');
 $gateway->login('BRUKER', 'PASSORD');
 $gateway->close;
exit;

Lenke til kommentar
Gjest Slettet+432

Hadde vært kult med et script som oppdaterte dyndns.org greiene automatisk, sånn at man slipper å gå inn på sidene deres hele tiden... :) noen som vet noe?

Lenke til kommentar

Noe ala dette?


#!/bin/bash

# your internet interface
inet_if=eth1
# curl utility
curl=/usr/bin/curl
# your update url
url=http://freedns.afraid.org/dynamic/update.php?din_key_her
# cache file for ip address
ip_cache=/tmp/ipaddr.cache

current_ip=`ifconfig ${inet_if} | sed '/.*inet addr:/!d;s///;s/ .*//'`
old_ip=`<$ip_cache`
[ $current_ip != $old_ip ] && \
 $curl -s $url && \
 echo $current_ip >$ip_cache
exit 0

 

Husk å touch /tmp/ipaddr_cache først. Forutsetter at du har ekstern ip på maskinen du kjører dette på (bruker Passthrough på NGT routern selv). Denne funker fint for afraid.org FreeDNS'en, vet ikke hvordan det er med dynDNS, men regner med at det er noe av samme ulla?

Lenke til kommentar

Som sagt, du er nødt til å ha din faktiske eksterne IP på et interface på maskinen (altså, ikke bak NAT). Har du Netopia 3351 kan du bruke passthrough (denne sender alle pakker som ikke blir stoppet av filtre på routern direkte til en annen maskin, resultater er at du kan for eksempel bruke en dedikert linux boks til router/firewall etc etc), sjekk guiden her - bare husk å forandre på filterne!

 

Om du ikke vil styre med det, bør det være en grei sak å bruke sider som http://www.whatismyip.com/, og bare parse ut ip'en din.

Lenke til kommentar

Google er din venn, og regexp er gøy ;)

Her er en versjon som "burde" virke, bare å bytte ut update URL'en. Jeg gir ingen garantier riktignok!

 


#!/bin/bash

# curl utility
curl=/usr/bin/curl
# your update url
url=http://freedns.afraid.org/dynamic/update.php?xxxxxxxxxxxxxxxxxxxxxxx
# cache file for ip address
ip_cache=/tmp/ipaddr.cache

current_ip=`curl -s http://www.whatismyip.com | sed '/<h1>Your IP  Is /!d;s///;s/<\/h1>//'`
old_ip=`<$ip_cache`
[ $current_ip != $old_ip ] && \
 $curl -s $url && \
 echo $current_ip >$ip_cache
exit 0 

Lenke til kommentar
Gjest Slettet+432

Takker...

 

!!!!!!!!!!!!!!!!!!!!!!!!

!  DO NOT reverse engineer any of the forms on this page.  DO NOT    |

|  access this page in any automated way.  All automated access to  |

|  our systems must go through the interfaces described at:          |

|                http://www.dyndns.com/developers/                  !

|  Any other automated access WILL result in account termination,    |

|  blocking of your user-agent, or any other remedies we deem        |

|  appropriate.                                                      |

!!!!!!!!!!!!!!!!!!!!!!!!

 

Dette stod i kildekoden. Hehe, tror ikke jeg skal prøve det. Men fant ut at jeg kan bruke et program for OS X istedenfor :)

Lenke til kommentar
  • 2 uker senere...

Vet, ikke om dette er typen script du er ute etter, men jeg bruker i alle fall dette nesten hver dag!!

Krever litt ny versjon av rhythmbox, da tidligere vesjoner hadde --volume-up og --volume-down i stedet for --set-volume.

#!/bin/bash
if test -z $1 || test -z $2
then
 echo "Bruk: $0 <tid til dimming> <timer som skal soves> [minutter som skal soves]"
else
 tid=$[ $2 * 60 ]
 if test ! -z $3
 then
   tid=$[ $tid + $3 ]
 fi
 echo "Ok, musikk dimmes om $1 minutter og starter igjen om $tid minutter."
 sleep $1m
 echo "Musikken dimmes."
 i=100
 while [ $i -gt 0 ]
 do
   i=$[ $i - 1 ]
   j=$(echo $i/100|bc -l)
   sleep 2s
   rhythmbox --set-volume=$j
 done
 rhythmbox --play-pause
 echo "Sov godt !!"
 sleep $(echo $tid)m
 echo "God morgen :)"
 rhythmbox --play-pause
 while [ $i -lt 100 ]
 do
   i=$[ $i + 1 ]
   j=$(echo $i/100|bc -l)
   sleep 2s
   rhythmbox --set-volume=$j
 done
fi

Lenke til kommentar

Dette er ikke noe jeg har laget selv, men uansett er utrolig nyttig script!

bash_completion, skal bare lastes ned og pakkes ut til et passende sted, så må man legge til følgende linje i ~/.bashrc:

 

source /path/to/bash_completion

Nå far man både atocomple gjennom scp, smart autocomplete som velger filer med riktig filnavn. F.eks vil xpdf <TAB>, velge pdf-filen selv om det er mange andre filer der osv:)

 

EDIT: bilde som viser noen flere funksjoner:

19041.jpg

Endret av LessThanJake
Lenke til kommentar
  • 1 måned senere...
Dette er ikke noe jeg har laget selv, men uansett er utrolig nyttig script!

bash_completion, skal bare lastes ned og pakkes ut til et passende sted, så må man legge til følgende linje i ~/.bashrc:

 

source /path/to/bash_completion

Nå far man både atocomple gjennom scp, smart autocomplete som velger filer med riktig filnavn. F.eks vil xpdf <TAB>, velge pdf-filen selv om det er mange andre filer der osv:)

 

EDIT: bilde som viser noen flere funksjoner:

19041.jpg

5122837[/snapback]

 

Dette er faktisk meget nyttig funksjonalitet. Jeg kan også anbefale å prøve et annet shell som for eksempel zsh, som gjør det samme.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...