argh
This commit is contained in:
parent
2c36ea4742
commit
a5fa2c5b07
67 changed files with 7142 additions and 14 deletions
|
|
@ -57,7 +57,8 @@ engineeringmenu = {
|
|||
gamesmenu = {
|
||||
{ "0 a.d.", "/usr/bin/0ad", "/usr/share/pixmaps/0ad.png" },
|
||||
{ "emulationstation", "/usr/bin/emulationstation", "/usr/share/pixmaps/retroarch.svg" },
|
||||
{ "steam", "/usr/bin/steam", "/usr/share/pixmaps/steam.png" },
|
||||
{ "steam", "/home/hanez/bin/steam.sh", "/usr/share/pixmaps/steam.png" },
|
||||
--{ "thimbleweed park", "/home/hanez/bin/thimbleweedpark", "/home/hanez/.local/share/Steam/steamapps/common/Thimbleweed Park/Icon32.png" },
|
||||
}
|
||||
graphicsmenu = {
|
||||
{ "aseprite", "/usr/bin/aseprite", "/usr/share/pixmaps/aseprite.png" },
|
||||
|
|
|
|||
17
.gitignore
vendored
17
.gitignore
vendored
|
|
@ -1,5 +1,9 @@
|
|||
*
|
||||
|
||||
!bin
|
||||
!bin/**
|
||||
bin/steam.sh
|
||||
|
||||
!.config
|
||||
|
||||
!.config/awesome
|
||||
|
|
@ -7,20 +11,7 @@
|
|||
.config/awesome/private.lua
|
||||
|
||||
!.emulationstation
|
||||
#!.emulationstation/es_input.cfg
|
||||
#!.emulationstation/es_settings.cfg
|
||||
!.emulationstation/es_systems.cfg
|
||||
#!.emulationstation/themes
|
||||
#!.emulationstation/themes/**
|
||||
#!.emulationstation/themes/es-theme-carbon
|
||||
#!.emulationstation/themes/es-theme-carbon/**
|
||||
#!.emulationstation/themes/simple/**
|
||||
|
||||
#!.config/retroarch
|
||||
#!.config/retroarch/retroarch.cfg
|
||||
|
||||
#!.config/mc
|
||||
#!.config/mc/ini
|
||||
|
||||
!.config/user-dirs.dirs
|
||||
!.config/user-dirs.locale
|
||||
|
|
|
|||
52
bin/#hasync
Executable file
52
bin/#hasync
Executable file
|
|
@ -0,0 +1,52 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Prepare dirs
|
||||
rm -rf ~/tmp/.hanez_org
|
||||
|
||||
mkdir ~/tmp/.hanez_org
|
||||
|
||||
cd ~/tmp/.hanez_org
|
||||
|
||||
# wget all that needs to generated
|
||||
#wget -U "Hannes/1.0" -X photos -X photo -m http://hanez
|
||||
wget -U "Bing/23.42" -m http://hanez
|
||||
|
||||
#wget http://hanez/error404.html -O hanez/error404.html
|
||||
|
||||
#wget http://hanez/feed/ -O hanez/feed.xml
|
||||
#wget http://hanez/feed/atom/ -O hanez/atom.xml
|
||||
#wget http://www.jabz.de/robots.txt -O hanez/robots.txt
|
||||
|
||||
# Local Foo
|
||||
rsync --delete -avr --times --exclude=.svn ~/www/hanez.org/htdocs/files/ ~/tmp/.hanez_org/hanez/files/
|
||||
|
||||
cp ~/.gnupg/hanez.asc ~/www/hanez.org/htdocs/files/hanez.asc
|
||||
|
||||
rsync --delete -avr --times --exclude=.svn ~/www/hanez.org/htdocs/css/ ~/tmp/.hanez_org/hanez/css/
|
||||
|
||||
#rsync --delete -avr --times --exclude=.svn ~/www/hanez.org/htdocs/fonts/ ~/tmp/.hanez_org/hanez/fonts/
|
||||
|
||||
rsync --delete -avr --times --exclude=.svn ~/www/hanez.org/htdocs/images/ ~/tmp/.hanez_org/hanez/images/
|
||||
|
||||
rsync --delete -avr --times --exclude=.svn ~/www/hanez.org/htdocs/js/ ~/tmp/.hanez_org/hanez/js/
|
||||
|
||||
rsync --delete -avr --times --exclude=.svn --exclude=.git --delete-excluded ~/www/hanez.org/htdocs/reveal.js/ ~/tmp/.hanez_org/hanez/reveal.js/
|
||||
|
||||
#cp -R ~/www/hanez.org/htdocs/x356g ~/tmp/.hanez_org/hanez/x356g
|
||||
|
||||
#cp ~/www/hanez.org/htdocs/sitemap.xml ~/tmp/.hanez_org/hanez/sitemap.xml
|
||||
|
||||
#cp ~/tmp/.hanez_org/hanez/images/index.html ~/tmp/.hanez_org/hanez/photo/index.html
|
||||
|
||||
mv ~/tmp/.hanez_org/hanez/feed/index.html ~/tmp/.hanez_org/hanez/feed/index.rss
|
||||
|
||||
mv ~/tmp/.hanez_org/hanez/feed/atom/index.html ~/tmp/.hanez_org/hanez/feed/atom/index.rss
|
||||
|
||||
# Server Foo
|
||||
rsync --delete -r -v -z --perms --group --times ~/tmp/.hanez_org/hanez/ hanez.org:/var/www/hanez.org/www/htdocs/
|
||||
|
||||
#scp ~/www/hanez.org/htdocs/htaccess hanez.org:/var/www/hanez.org/.htaccess
|
||||
|
||||
# Cleanup
|
||||
rm -rf ~/tmp/.hanez_org
|
||||
|
||||
9
bin/+myip
Executable file
9
bin/+myip
Executable file
|
|
@ -0,0 +1,9 @@
|
|||
#!/bin/bash
|
||||
|
||||
# http://askubuntu.com/questions/95910/command-for-determining-my-public-ip
|
||||
|
||||
# Works too but very slow (a lot more features available):
|
||||
# curl ifconfig.me
|
||||
|
||||
wget -qO- http://ipecho.net/plain; echo
|
||||
|
||||
19
bin/+nas-boot
Executable file
19
bin/+nas-boot
Executable file
|
|
@ -0,0 +1,19 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Needs NAS_HOST and NAS_MAC defined in ~/.config.sh
|
||||
|
||||
source ~/.config.sh
|
||||
|
||||
/usr/bin/zenity --question --text "Do You really want to boot your NAS device?"
|
||||
case $? in
|
||||
0)
|
||||
ping -c 1 $NAS_HOST
|
||||
VALUE=$?
|
||||
if [ $VALUE == 0 ]; then
|
||||
/usr/bin/zenity --info --icon-name=error --text "Boot command failed: Device already up!"
|
||||
elif [ $VALUE == 1 ]; then
|
||||
/usr/bin/wol $NAS_MAC
|
||||
/usr/bin/zenity --info --text "Boot command sent to NAS device."
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
18
bin/+nas-reboot
Executable file
18
bin/+nas-reboot
Executable file
|
|
@ -0,0 +1,18 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Needs NAS_HOST and NAS_USER defined in ~/.config.sh
|
||||
|
||||
source ~/.config.sh
|
||||
|
||||
/usr/bin/zenity --question --text "Do You really want to reboot your NAS device?"
|
||||
case $? in
|
||||
0)
|
||||
/usr/bin/ssh $NAS_USER@$NAS_HOST "/usr/bin/sudo /sbin/shutdown -r now"
|
||||
VALUE=$?
|
||||
if [ $VALUE == 0 ]; then
|
||||
/usr/bin/zenity --info --text "Reboot command send to NAS device."
|
||||
elif [ $VALUE == 255 ]; then
|
||||
/usr/bin/zenity --info --icon-name=error --text "Reboot command failed: No route to host"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
18
bin/+nas-shutdown
Executable file
18
bin/+nas-shutdown
Executable file
|
|
@ -0,0 +1,18 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Needs NAS_HOST and NAS_USER defined in ~/.config.sh
|
||||
|
||||
source ~/.config.sh
|
||||
|
||||
/usr/bin/zenity --question --text "Do You really want to shutdown your NAS device?"
|
||||
case $? in
|
||||
0)
|
||||
/usr/bin/ssh $NAS_USER@$NAS_HOST "/usr/bin/sudo /sbin/shutdown -h -P now"
|
||||
VALUE=$?
|
||||
if [ $VALUE == 0 ]; then
|
||||
/usr/bin/zenity --info --text "Shutdown command send to NAS device."
|
||||
elif [ $VALUE == 255 ]; then
|
||||
/usr/bin/zenity --info --icon-name=error --text "Shutdown command failed: No route to host"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
4
bin/.directory
Normal file
4
bin/.directory
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
[Dolphin]
|
||||
Timestamp=2015,9,18,2,50,8
|
||||
Version=3
|
||||
ViewMode=2
|
||||
11
bin/README.md
Normal file
11
bin/README.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
~/bin
|
||||
=====
|
||||
|
||||
This repository contains my ~/bin directory to make it easy to share it across
|
||||
multiple hosts.
|
||||
|
||||
Scripts use a "+" as prefix to prevent name collisions in command completion.
|
||||
|
||||
Some scripts require a ~/.config.sh file where some config vars are defined.
|
||||
|
||||
No documentation! Maybe some day...
|
||||
68
bin/_old/mkxpi
Executable file
68
bin/_old/mkxpi
Executable file
|
|
@ -0,0 +1,68 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# A simple script to make xpi files.
|
||||
# Version: 0.2
|
||||
#
|
||||
# Original Author: Gordon Luk
|
||||
# Website: http://www.getluky.net/projects/mkxpi
|
||||
#
|
||||
# Patched by Johannes Findeisen to work more usefull.
|
||||
# Website: http://hanez.org
|
||||
#
|
||||
# Notes:
|
||||
# It expects the following directory structure:
|
||||
# <Path_to_Project>/<project> - Project directory, will place finished xpi file here.
|
||||
# <Path_to_Project>/<project>/install.rdf - Installation RDF
|
||||
# <Path_to_Project>/<project>/install.js - Installation JavaSript
|
||||
# <Path_to_Project>/<project>/chrome/ - will make the <project>.jar file here.
|
||||
# <Path_to_Project>/<project>/chrome/content/ - project content files
|
||||
# <Path_to_Project>/<project>/chrome/locale/ - project locale files
|
||||
# <Path_to_Project>/<project>/chrome/skin/ - project skin files
|
||||
|
||||
usage()
|
||||
{
|
||||
echo "Usage: mkxpi <Path_to_Project> <Project_Name> <Version>"
|
||||
}
|
||||
|
||||
path=$1
|
||||
|
||||
project=$2
|
||||
|
||||
version=$3
|
||||
|
||||
if [ "1$project" = "1" ]; then
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "1$path" = "1" ]; then
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "1$version" = "1" ]; then
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd $path
|
||||
|
||||
cd chrome
|
||||
|
||||
jar -cfM $project.jar ./content ./skin ./locale
|
||||
|
||||
cd $path
|
||||
|
||||
jar -cfM $project-$version-fx.xpi ./chrome/$project.jar ./install.rdf
|
||||
|
||||
mv $project-$version-fx.xpi ../
|
||||
|
||||
echo "Cleaning up..."
|
||||
|
||||
cd $path
|
||||
|
||||
rm ./chrome/$project.jar
|
||||
|
||||
echo "Done!"
|
||||
|
||||
exit 0
|
||||
3
bin/_old/old/____hasync2
Executable file
3
bin/_old/old/____hasync2
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
|
||||
rsync -r -v -z hanez.org:/var/www/hanez.org/www/htdocs/ /home/www/hanez.org/htdocs/ --exclude=wp-config.php --exclude=*~ --exclude=.svn --exclude=tmp.txt --exclude=cache/* --perms --group --times
|
||||
3
bin/_old/old/backup.sh
Executable file
3
bin/_old/old/backup.sh
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
|
||||
rsync -v -r --delete --progress --exclude=/dev --exclude=/tmp -e ssh root@217.160.187.113:/ /data/server/
|
||||
5
bin/_old/old/ctail
Executable file
5
bin/_old/old/ctail
Executable file
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/sh
|
||||
|
||||
|
||||
tail -f $1 | perl -pe $reg "s/$2/\e[1;31;43m$&\e[0m/g"
|
||||
|
||||
35
bin/_old/old/cvspasswd.c
Executable file
35
bin/_old/old/cvspasswd.c
Executable file
|
|
@ -0,0 +1,35 @@
|
|||
/* Trivial password generator for cvs. Compile with 'cc -o cvspasswd cvspasswd.c -lcrypt' */
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/times.h>
|
||||
|
||||
/* Generate a single character of salt given a random integer. See 'man crypt'. */
|
||||
int base64(int x)
|
||||
{
|
||||
const char b64[64] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz./";
|
||||
return b64[x % 64];
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
char ibuf[256];
|
||||
char passwd[256];
|
||||
char saltstr[3];
|
||||
struct tms t;
|
||||
|
||||
if (argc != 2) {
|
||||
fprintf(stderr, "Usage: cvspasswd username\n");
|
||||
exit(1);
|
||||
}
|
||||
fprintf(stderr, "Password for %s: ", argv[1]);
|
||||
ibuf[0] = 0;
|
||||
fgets(ibuf, sizeof(ibuf), stdin);
|
||||
sscanf(ibuf, "%s", passwd);
|
||||
saltstr[0] = base64(times(&t));
|
||||
saltstr[1] = base64(time(0));
|
||||
saltstr[2] = 0;
|
||||
|
||||
printf("%s:%s:cvsuser\n", argv[1], crypt(passwd, saltstr));
|
||||
exit(0);
|
||||
}
|
||||
|
||||
9
bin/_old/old/cvspasswd.sh
Executable file
9
bin/_old/old/cvspasswd.sh
Executable file
|
|
@ -0,0 +1,9 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
srand (time());
|
||||
my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))";
|
||||
my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);
|
||||
my $plaintext = shift;
|
||||
my $crypttext = crypt ($plaintext, $salt);
|
||||
|
||||
print "${crypttext}\n";
|
||||
41
bin/_old/old/dnsnotify
Executable file
41
bin/_old/old/dnsnotify
Executable file
|
|
@ -0,0 +1,41 @@
|
|||
#!/usr/bin/perl -w
|
||||
|
||||
# usage: dnsnotify zone slave [...]
|
||||
# example: dnsnotify example.org 1.2.3.4 1.2.3.5
|
||||
|
||||
use Net::DNS;
|
||||
|
||||
$zone = shift;
|
||||
@master_ns = @ARGV;
|
||||
|
||||
$res = new Net::DNS::Resolver;
|
||||
|
||||
foreach $ns (@master_ns) {
|
||||
$packet = new Net::DNS::Packet($zone, "SOA", "IN");
|
||||
die unless defined $packet;
|
||||
|
||||
($packet->header)->opcode("NS_NOTIFY_OP");
|
||||
($packet->header)->rd(0);
|
||||
($packet->header)->aa(1);
|
||||
|
||||
$res->nameservers($ns);
|
||||
|
||||
# Prints outgoing packet - the NOTIFY
|
||||
# $packet->print;
|
||||
|
||||
$reply = $res->send($packet);
|
||||
|
||||
if (defined $reply) {
|
||||
|
||||
print "Received NOTIFY answer from " . $reply->answerfrom . "\n";
|
||||
# Print received packet - the answer
|
||||
# $reply->print;
|
||||
|
||||
} else {
|
||||
|
||||
warn "\$res->send indicates NOTIFY error for $ns\n";
|
||||
}
|
||||
}
|
||||
|
||||
exit 0;
|
||||
|
||||
33
bin/_old/old/dynhdparm
Executable file
33
bin/_old/old/dynhdparm
Executable file
|
|
@ -0,0 +1,33 @@
|
|||
#!/bin/sh
|
||||
|
||||
# dynhdparm is a script to deactivate harddiscs with "hdparm -y" if
|
||||
# they are not used. I had this running as cron job on a fileserver.
|
||||
#
|
||||
# Author: Johannes Findeisen <you@hanez.org>
|
||||
#
|
||||
# Usage: dynhdparm /dev/hda
|
||||
# Or: dynhdparm /dev/hda /dev/hdb
|
||||
#
|
||||
# Note: This script will not work to disable devices where the root
|
||||
# partition resides on.
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
echo "You need at least to set one device as paramater"
|
||||
echo "Example: dynhdparm /dev/hdd /dev/sda"
|
||||
echo ""
|
||||
exit
|
||||
fi
|
||||
|
||||
DEVICES=$@
|
||||
LSOFDATA=""
|
||||
|
||||
for DEVICE in $DEVICES; do
|
||||
PARTITIONS=`cat /etc/mtab | grep $DEVICE | cut -d " " -f 2`
|
||||
for PARTITION in $PARTITIONS; do
|
||||
LSOFDATA=$LSOFDATA`lsof | grep $PARTITION`
|
||||
done
|
||||
if [ ${#LSOFDATA} -lt 1 ]; then
|
||||
HDPARMOUT=`hdparm -y $DEVICE`
|
||||
fi
|
||||
done
|
||||
|
||||
6
bin/_old/old/foo
Executable file
6
bin/_old/old/foo
Executable file
|
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
foo=`dirname $0`
|
||||
|
||||
echo $foo;
|
||||
|
||||
9
bin/_old/old/glasync
Executable file
9
bin/_old/old/glasync
Executable file
|
|
@ -0,0 +1,9 @@
|
|||
#!/bin/bash
|
||||
|
||||
rsync --delete -r -v -z /mnt/shared/www/wordpress/ \
|
||||
-e ssh \
|
||||
glashoffs.de:/var/www/glashoffs.de/www/htdocs/ \
|
||||
--exclude='*~' \
|
||||
--exclude='wp-config.php' \
|
||||
--delete-excluded --perms --group
|
||||
|
||||
3
bin/_old/old/hddstandby.sh
Executable file
3
bin/_old/old/hddstandby.sh
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
|
||||
sudo /sbin/hdparm -y /dev/hdc
|
||||
4
bin/_old/old/homeback
Executable file
4
bin/_old/old/homeback
Executable file
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/sh
|
||||
|
||||
rsync -av --delete /home/ /media/DATA_400GB-2/homebackup/
|
||||
|
||||
21
bin/_old/old/hprint
Executable file
21
bin/_old/old/hprint
Executable file
|
|
@ -0,0 +1,21 @@
|
|||
#!/bin/bash
|
||||
|
||||
echo "TODO...!"
|
||||
|
||||
#cd /home/hanez/Desktop/neu/
|
||||
|
||||
#for i in ./*; do
|
||||
# echo $i
|
||||
# pdf2ps $i
|
||||
# mv *.ps ../ps/
|
||||
#done
|
||||
|
||||
#cd /home/hanez/Desktop/ps/
|
||||
|
||||
#for h in ./*; do
|
||||
# cat $h > /dev/usb/lp0
|
||||
# echo $h
|
||||
# sleep 5
|
||||
#done
|
||||
|
||||
|
||||
4
bin/_old/old/hxterm
Executable file
4
bin/_old/old/hxterm
Executable file
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/sh
|
||||
|
||||
xterm -bg black -fg grey -sb -leftbar -si -bc -cr orange
|
||||
|
||||
18
bin/_old/old/install-daemontools
Executable file
18
bin/_old/old/install-daemontools
Executable file
|
|
@ -0,0 +1,18 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# install daemontools on fedora/redhat linux
|
||||
#
|
||||
# Mike Jackson <mj@sci.fi> 5 NOV 2005
|
||||
#
|
||||
#
|
||||
mkdir /package
|
||||
chmod 1755 /package
|
||||
cd /package
|
||||
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
|
||||
tar xzvf daemontools-0.76.tar.gz
|
||||
rm -f daemontools-0.76.tar.gz
|
||||
cd admin/daemontools-0.76/src
|
||||
wget http://www.qmailrocks.org/downloads/patches/daemontools-0.76.errno.patch
|
||||
patch < daemontools-0.76.errno.patch
|
||||
cd ..
|
||||
package/install
|
||||
14
bin/_old/old/intenso
Executable file
14
bin/_old/old/intenso
Executable file
|
|
@ -0,0 +1,14 @@
|
|||
#!/bin/sh
|
||||
|
||||
mencoder $1 \
|
||||
-o $2 \
|
||||
-ffourcc XVID \
|
||||
-ofps 18 \
|
||||
-vf-add scale=220:176, \
|
||||
-vf-add expand=220:176:-1:-1:1,rotate=2,flip \
|
||||
-srate 44100 \
|
||||
-ovc xvid \
|
||||
-xvidencopts bitrate=800:max_bframes=0:quant_type=h263:me_quality=0 \
|
||||
-oac lavc \
|
||||
-lavcopts acodec=mp2:abitrate=64
|
||||
|
||||
70
bin/_old/old/jd.sh
Executable file
70
bin/_old/old/jd.sh
Executable file
|
|
@ -0,0 +1,70 @@
|
|||
#!/bin/bash
|
||||
#JD Installer/Starter Version 0.2
|
||||
#by Jiaz(JD-Team), jiaz@jdownloader.org
|
||||
#You need at least:
|
||||
#1.) bash (its a bash script ;) )
|
||||
#2.) wget
|
||||
#3.) Java Version >= 1.5 (OpenJDK works also in latest Version)
|
||||
|
||||
#How to use this?
|
||||
#1.) chmod +x jd.sh
|
||||
#2.) Place it anywhere you want
|
||||
#3.) Running jd.sh for the first time will install and setup JD into JDDIR folder
|
||||
#4.) Running jd.sh after the first time will start JDownloader directly
|
||||
|
||||
#Parameters
|
||||
# update (will perform an update)
|
||||
|
||||
#JD Installation folder (adjust to your needs)
|
||||
JDDIR=~/.jd
|
||||
#default path to our install/update tool (DO NOT Change this)
|
||||
JDINSTALLER=http://update0.jdownloader.org/jdupdate.jar
|
||||
|
||||
if [ -e $JDDIR ]
|
||||
then
|
||||
if [ "$1" = "update" ]
|
||||
then
|
||||
if [ -e $JDDIR/jdupdate.jar ]
|
||||
then
|
||||
cd $JDDIR
|
||||
echo "Start JD-Updater"
|
||||
java -Xmx512m -jar jdupdate.jar
|
||||
exit
|
||||
else
|
||||
echo "Cannot start JD-Updater: Download/Start JD-Installer"
|
||||
cd $JDDIR
|
||||
wget $JDINSTALLER
|
||||
java -Xmx512m -jar jdupdate.jar
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
if [ -e $JDDIR/JDownloader.jar ]
|
||||
then
|
||||
echo "JD Installation found: Starting JD now"
|
||||
cd $JDDIR
|
||||
#java -Xmx512m -jar JDownloader.jar --add-links $1 $2 $3 $4 $5 $6 $7 $8 $9
|
||||
java -Xmx512m -jar JDownloader.jar
|
||||
exit
|
||||
else
|
||||
echo "JD Installation found: No valid JDownloader.jar exist!"
|
||||
fi
|
||||
if [ -e $JDDIR/jdupdate.jar ]
|
||||
then
|
||||
cd $JDDIR
|
||||
echo "Start JD-Updater"
|
||||
java -Xmx512m -jar jdupdate.jar
|
||||
else
|
||||
echo "Cannot start JD-Updater: Download/Start JD-Installer"
|
||||
cd $JDDIR
|
||||
wget $JDINSTALLER
|
||||
java -Xmx512m -jar jdupdate.jar
|
||||
exit
|
||||
fi
|
||||
else
|
||||
echo "Download/Start JD-Installer"
|
||||
mkdir $JDDIR
|
||||
cd $JDDIR
|
||||
wget $JDINSTALLER
|
||||
java -Xmx512m -jar jdupdate.jar
|
||||
exit
|
||||
fi
|
||||
80
bin/_old/old/mkmp3list
Normal file
80
bin/_old/old/mkmp3list
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
#!/usr/bin/php
|
||||
|
||||
<?php
|
||||
|
||||
|
||||
function returnSearchArray($command){
|
||||
ob_start();
|
||||
passthru($command);
|
||||
$output = ob_get_contents();
|
||||
ob_end_clean();
|
||||
$slist = explode("\n", $output);
|
||||
return $slist;
|
||||
}
|
||||
|
||||
$max_slash = NULL;
|
||||
|
||||
$min_slash = 1000;
|
||||
|
||||
$list = returnSearchArray("find /data/mp3 -print");
|
||||
|
||||
for($i=0;$i<sizeof($list);$i++) {
|
||||
if (file_exists($list[$i])) {
|
||||
|
||||
$slashcount = substr_count($list[$i], '/');
|
||||
$xlist[$slashcount][$i]['source'] = $list[$i];
|
||||
|
||||
$xlist[$slashcount][$i]['slashcount'] = $slashcount;
|
||||
|
||||
if ($max_slash < $slashcount)
|
||||
$max_slash = $slashcount;
|
||||
|
||||
if ($min_slash > $slashcount)
|
||||
$min_slash = $slashcount;
|
||||
|
||||
$tfile = strrchr($list[$i], "/");
|
||||
$xfile = substr($tfile, 1, strlen($tfile));
|
||||
|
||||
if (is_dir($list[$i])) {
|
||||
$xlist[$slashcount][$i]['fileextension'] = "";
|
||||
$xlist[$slashcount][$i]['file'] = $xfile;
|
||||
$tpath = $list[$i];
|
||||
}
|
||||
else {
|
||||
$xlist[$slashcount][$i]['fileextension'] = substr($list[$i], strlen($list[$i])-4 , 4);
|
||||
$xlist[$slashcount][$i]['file'] = substr($xfile, 0, strlen($tfile)-5);
|
||||
$tpath = substr($list[$i], 0, strlen($list[$i])-4);
|
||||
}
|
||||
|
||||
$xpath = substr($tpath, 0, (strlen($tpath)-strlen($xlist[$slashcount][$i]['file'])));
|
||||
|
||||
$xlist[$slashcount][$i]['path'] = $xpath;
|
||||
|
||||
$dfile = str_replace(". ", "_", $xlist[$slashcount][$i]['file']);
|
||||
$dfile = str_replace("--", "_", $dfile);
|
||||
$dfile = str_replace(" ", "_", $dfile);
|
||||
$dfile = str_replace(" .", "_", $dfile);
|
||||
$dfile = str_replace("( ", "(", $dfile);
|
||||
$dfile = str_replace(" )", ")", $dfile);
|
||||
$dfile = str_replace("'", "", $dfile);
|
||||
$dfile = str_replace(" ", "_", $dfile);
|
||||
$dfile = str_replace(".", "_", $dfile);
|
||||
$dfile = str_replace("__", "_", $dfile);
|
||||
|
||||
$xlist[$slashcount][$i]['destination'] = $xlist[$slashcount][$i]['path'] . $dfile . $xlist[$slashcount][$i]['fileextension'];
|
||||
}
|
||||
}
|
||||
|
||||
for ($i=$max_slash;$i>=$min_slash;$i--) {
|
||||
foreach ($xlist[$i] as $value) {
|
||||
if ($value['source'] != $value['destination']) {
|
||||
$com = "mv -f --verbose \"".$value['source']."' '".$value['destination']."\"";
|
||||
echo $com;
|
||||
#passthru($com);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
|
||||
465
bin/_old/old/simple-glade-codegen
Executable file
465
bin/_old/old/simple-glade-codegen
Executable file
|
|
@ -0,0 +1,465 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
# simple-glade-codegen.py
|
||||
# A code generator that uses pygtk, glade and SimpleGladeApp.py
|
||||
# Copyright (C) 2004 Sandino Flores Moreno
|
||||
|
||||
# This library is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Lesser General Public
|
||||
# License as published by the Free Software Foundation; either
|
||||
# version 2.1 of the License, or (at your option) any later version.
|
||||
#
|
||||
# This library is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this library; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||
# USA
|
||||
|
||||
import sys
|
||||
import os
|
||||
import re
|
||||
import codecs
|
||||
import tokenize
|
||||
import shutil
|
||||
import time
|
||||
import xml.sax
|
||||
from xml.sax._exceptions import SAXParseException
|
||||
|
||||
header_format = """\
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: UTF8 -*-
|
||||
|
||||
# Python module %(module)s.py
|
||||
# Autogenerated from %(glade)s
|
||||
# Generated on %(date)s
|
||||
|
||||
# Warning: Do not delete or modify comments related to context
|
||||
# They are required to keep user's code
|
||||
|
||||
import os
|
||||
import gtk
|
||||
from SimpleGladeApp import SimpleGladeApp
|
||||
|
||||
glade_dir = ""
|
||||
|
||||
# Put your modules and data here
|
||||
|
||||
# From here through main() codegen inserts/updates a class for
|
||||
# every top-level widget in the .glade file.
|
||||
|
||||
"""
|
||||
|
||||
class_format = """\
|
||||
class %(class)s(SimpleGladeApp):
|
||||
%(t)sdef __init__(self, path="%(glade)s", root="%(root)s", domain=None, **kwargs):
|
||||
%(t)s%(t)spath = os.path.join(glade_dir, path)
|
||||
%(t)s%(t)sSimpleGladeApp.__init__(self, path, root, domain, **kwargs)
|
||||
|
||||
%(t)sdef new(self):
|
||||
%(t)s%(t)s#context %(class)s.new {
|
||||
%(t)s%(t)sprint "A new %(class)s has been created"
|
||||
%(t)s%(t)s#context %(class)s.new }
|
||||
|
||||
%(t)s#context %(class)s custom methods {
|
||||
%(t)s#--- Write your own methods here ---#
|
||||
%(t)s#context %(class)s custom methods }
|
||||
|
||||
"""
|
||||
|
||||
callback_format = """\
|
||||
%(t)sdef %(handler)s(self, widget, *args):
|
||||
%(t)s%(t)s#context %(class)s.%(handler)s {
|
||||
%(t)s%(t)sprint "%(handler)s called with self.%%s" %% widget.get_name()
|
||||
%(t)s%(t)s#context %(class)s.%(handler)s }
|
||||
|
||||
"""
|
||||
|
||||
creation_format = """\
|
||||
%(t)sdef %(handler)s(self, str1, str2, int1, int2):
|
||||
%(t)s%(t)s#context %(class)s.%(handler)s {
|
||||
%(t)s%(t)swidget = gtk.Label("%(handler)s")
|
||||
%(t)s%(t)swidget.show_all()
|
||||
%(t)s%(t)sreturn widget
|
||||
%(t)s%(t)s#context %(class)s.%(handler)s }
|
||||
|
||||
"""
|
||||
|
||||
main_format = """\
|
||||
def main():
|
||||
"""
|
||||
|
||||
instance_format = """\
|
||||
%(t)s%(root)s = %(class)s()
|
||||
"""
|
||||
run_format = """\
|
||||
|
||||
%(t)s%(root)s.run()
|
||||
|
||||
if __name__ == "__main__":
|
||||
%(t)smain()
|
||||
"""
|
||||
|
||||
class NotGladeDocumentException(SAXParseException):
|
||||
def __init__(self, glade_writer):
|
||||
strerror = "Not a glade-2 document"
|
||||
SAXParseException.__init__(self, strerror, None, glade_writer.sax_parser)
|
||||
|
||||
class SimpleGladeCodeWriter(xml.sax.handler.ContentHandler):
|
||||
def __init__(self, glade_file):
|
||||
self.indent = "\t"
|
||||
self.code = ""
|
||||
self.roots_list = []
|
||||
self.widgets_stack = []
|
||||
self.creation_functions = []
|
||||
self.callbacks = []
|
||||
self.parent_is_creation_function = False
|
||||
self.parent_is_object = False
|
||||
self.glade_file = glade_file
|
||||
self.data = {}
|
||||
self.input_dir, self.input_file = os.path.split(glade_file)
|
||||
base = os.path.splitext(self.input_file)[0]
|
||||
module = self.normalize_symbol(base)
|
||||
self.output_file = os.path.join(self.input_dir, module) + ".py"
|
||||
self.sax_parser = xml.sax.make_parser()
|
||||
self.sax_parser.setFeature(xml.sax.handler.feature_external_ges, False)
|
||||
self.sax_parser.setContentHandler(self)
|
||||
self.data["glade"] = self.input_file
|
||||
self.data["module"] = module
|
||||
self.data["date"] = time.asctime()
|
||||
|
||||
def normalize_symbol(self, base):
|
||||
return "_".join( re.findall(tokenize.Name, base) )
|
||||
|
||||
def capitalize_symbol(self, base):
|
||||
ClassName = "[a-zA-Z0-9]+"
|
||||
base = self.normalize_symbol(base)
|
||||
capitalize_map = lambda s : s[0].upper() + s[1:]
|
||||
return "".join( map(capitalize_map, re.findall(ClassName, base)) )
|
||||
|
||||
def uncapitalize_symbol(self, base):
|
||||
InstanceName = "([a-z])([A-Z])"
|
||||
action = lambda m: "%s_%s" % ( m.groups()[0], m.groups()[1].lower() )
|
||||
base = self.normalize_symbol(base)
|
||||
base = base[0].lower() + base[1:]
|
||||
return re.sub(InstanceName, action, base)
|
||||
|
||||
def startElement(self, name, attrs):
|
||||
if self.parent_is_object:
|
||||
return
|
||||
elif name == "object":
|
||||
self.parent_is_object = True
|
||||
elif name == "widget":
|
||||
widget_id = attrs.get("id")
|
||||
widget_class = attrs.get("class")
|
||||
if not widget_id or not widget_class:
|
||||
raise NotGladeDocumentException(self)
|
||||
if not self.widgets_stack:
|
||||
self.creation_functions = []
|
||||
self.callbacks = []
|
||||
class_name = self.capitalize_symbol(widget_id)
|
||||
self.data["class"] = class_name
|
||||
self.data["root"] = widget_id
|
||||
self.roots_list.append(widget_id)
|
||||
self.code += class_format % self.data
|
||||
self.widgets_stack.append(widget_id)
|
||||
elif name == "signal":
|
||||
if not self.widgets_stack:
|
||||
raise NotGladeDocumentException(self)
|
||||
widget = self.widgets_stack[-1]
|
||||
signal_object = attrs.get("object")
|
||||
if signal_object:
|
||||
return
|
||||
handler = attrs.get("handler")
|
||||
if not handler:
|
||||
raise NotGladeDocumentException(self)
|
||||
if handler.startswith("gtk_"):
|
||||
return
|
||||
signal = attrs.get("name")
|
||||
if not signal:
|
||||
raise NotGladeDocumentException(self)
|
||||
self.data["widget"] = widget
|
||||
self.data["signal"] = signal
|
||||
self.data["handler"]= handler
|
||||
if handler not in self.callbacks:
|
||||
self.code += callback_format % self.data
|
||||
self.callbacks.append(handler)
|
||||
elif name == "property":
|
||||
if not self.widgets_stack:
|
||||
raise NotGladeDocumentException(self)
|
||||
widget = self.widgets_stack[-1]
|
||||
prop_name = attrs.get("name")
|
||||
if not prop_name:
|
||||
raise NotGladeDocumentException(self)
|
||||
if prop_name == "creation_function":
|
||||
self.parent_is_creation_function = True
|
||||
|
||||
def characters(self, content):
|
||||
if self.parent_is_object:
|
||||
return
|
||||
if self.parent_is_creation_function:
|
||||
if not self.widgets_stack:
|
||||
raise NotGladeDocumentException(self)
|
||||
handler = content.strip()
|
||||
if handler not in self.creation_functions:
|
||||
self.data["handler"] = handler
|
||||
self.code += creation_format % self.data
|
||||
self.creation_functions.append(handler)
|
||||
|
||||
def endElement(self, name):
|
||||
if name == "object":
|
||||
self.parent_is_object = False
|
||||
elif name == "property":
|
||||
self.parent_is_creation_function = False
|
||||
elif name == "widget":
|
||||
if not self.widgets_stack:
|
||||
raise NotGladeDocumentException(self)
|
||||
self.widgets_stack.pop()
|
||||
|
||||
def write(self):
|
||||
self.data["t"] = self.indent
|
||||
self.code += header_format % self.data
|
||||
try:
|
||||
glade = open(self.glade_file, "r")
|
||||
self.sax_parser.parse(glade)
|
||||
except xml.sax._exceptions.SAXParseException, e:
|
||||
sys.stderr.write("Error parsing document\n")
|
||||
return None
|
||||
except IOError, e:
|
||||
sys.stderr.write("%s\n" % e.strerror)
|
||||
return None
|
||||
|
||||
self.code += main_format % self.data
|
||||
|
||||
for root in self.roots_list:
|
||||
self.data["class"] = self.capitalize_symbol(root)
|
||||
self.data["root"] = self.uncapitalize_symbol(root)
|
||||
self.code += instance_format % self.data
|
||||
|
||||
self.data["root"] = self.uncapitalize_symbol(self.roots_list[0])
|
||||
self.code += run_format % self.data
|
||||
|
||||
try:
|
||||
self.output = codecs.open(self.output_file, "w", "utf-8")
|
||||
self.output.write(self.code)
|
||||
self.output.close()
|
||||
except IOError, e:
|
||||
sys.stderr.write("%s\n" % e.strerror)
|
||||
return None
|
||||
return self.output_file
|
||||
|
||||
def usage():
|
||||
program = sys.argv[0]
|
||||
print """\
|
||||
Write a simple python file from a glade file.
|
||||
Usage: %s <file.glade>
|
||||
""" % program
|
||||
|
||||
def which(program):
|
||||
if sys.platform.startswith("win"):
|
||||
exe_ext = ".exe"
|
||||
else:
|
||||
exe_ext = ""
|
||||
path_list = os.environ["PATH"].split(os.pathsep)
|
||||
for path in path_list:
|
||||
program_path = os.path.join(path, program) + exe_ext
|
||||
if os.path.isfile(program_path):
|
||||
return program_path
|
||||
return None
|
||||
|
||||
def check_for_programs():
|
||||
packages = {"diff" : "diffutils", "patch" : "patch"}
|
||||
for package in packages.keys():
|
||||
if not which(package):
|
||||
sys.stderr.write("Required program %s could not be found\n" % package)
|
||||
sys.stderr.write("Is the package %s installed?\n" % packages[package])
|
||||
if sys.platform.startswith("win"):
|
||||
sys.stderr.write("Download it from http://gnuwin32.sourceforge.net/packages.html\n")
|
||||
sys.stderr.write("Also, be sure it is in the PATH\n")
|
||||
return False
|
||||
return True
|
||||
|
||||
def main():
|
||||
if not check_for_programs():
|
||||
return -1
|
||||
if len(sys.argv) == 2:
|
||||
code_writer = SimpleGladeCodeWriter( sys.argv[1] )
|
||||
glade_file = code_writer.glade_file
|
||||
output_file = code_writer.output_file
|
||||
output_file_orig = output_file + ".orig"
|
||||
output_file_bak = output_file + ".bak"
|
||||
short_f = os.path.split(output_file)[1]
|
||||
short_f_orig = short_f + ".orig"
|
||||
short_f_bak = short_f + ".bak"
|
||||
helper_module = os.path.join(code_writer.input_dir,SimpleGladeApp_py)
|
||||
custom_diff = "custom.diff"
|
||||
|
||||
exists_output_file = os.path.exists(output_file)
|
||||
exists_output_file_orig = os.path.exists(output_file_orig)
|
||||
if not exists_output_file_orig and exists_output_file:
|
||||
sys.stderr.write('File "%s" exists\n' % short_f)
|
||||
sys.stderr.write('but "%s" does not.\n' % short_f_orig)
|
||||
sys.stderr.write("That means your custom code would be overwritten.\n")
|
||||
sys.stderr.write('Please manually remove "%s"\n' % short_f)
|
||||
sys.stderr.write("from this directory.\n")
|
||||
sys.stderr.write("Anyway, I\'ll create a backup for you in\n")
|
||||
sys.stderr.write('"%s"\n' % short_f_bak)
|
||||
shutil.copy(output_file, output_file_bak)
|
||||
return -1
|
||||
if exists_output_file_orig and exists_output_file:
|
||||
os.system("diff -U1 %s %s > %s" % (output_file_orig, output_file, custom_diff) )
|
||||
shutil.copy(output_file, output_file_bak)
|
||||
if not code_writer.write():
|
||||
os.remove(custom_diff)
|
||||
return -1
|
||||
shutil.copy(output_file, output_file_orig)
|
||||
if os.system("patch -fp0 < %s" % custom_diff):
|
||||
os.remove(custom_diff)
|
||||
return -1
|
||||
os.remove(custom_diff)
|
||||
else:
|
||||
if not code_writer.write():
|
||||
return -1
|
||||
shutil.copy(output_file, output_file_orig)
|
||||
os.chmod(output_file, 0755)
|
||||
if not os.path.isfile(helper_module):
|
||||
open(helper_module, "w").write(SimpleGladeApp_content)
|
||||
print "Wrote", output_file
|
||||
return 0
|
||||
else:
|
||||
usage()
|
||||
return -1
|
||||
|
||||
SimpleGladeApp_py = "SimpleGladeApp.py"
|
||||
|
||||
SimpleGladeApp_content = '''\
|
||||
# SimpleGladeApp.py
|
||||
# Module that provides an object oriented abstraction to pygtk and libglade.
|
||||
# Copyright (C) 2004 Sandino Flores Moreno
|
||||
|
||||
# This library is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Lesser General Public
|
||||
# License as published by the Free Software Foundation; either
|
||||
# version 2.1 of the License, or (at your option) any later version.
|
||||
#
|
||||
# This library is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this library; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||
# USA
|
||||
|
||||
try:
|
||||
import os
|
||||
import sys
|
||||
import gtk
|
||||
import gtk.glade
|
||||
import weakref
|
||||
except ImportError:
|
||||
print "Error importing pygtk2 and pygtk2-libglade"
|
||||
sys.exit(1)
|
||||
|
||||
class SimpleGladeApp(dict):
|
||||
def __init__(self, glade_filename, main_widget_name=None, domain=None, **kwargs):
|
||||
if os.path.isfile(glade_filename):
|
||||
self.glade_path = glade_filename
|
||||
else:
|
||||
glade_dir = os.path.split( sys.argv[0] )[0]
|
||||
self.glade_path = os.path.join(glade_dir, glade_filename)
|
||||
for key, value in kwargs.items():
|
||||
try:
|
||||
setattr(self, key, weakref.proxy(value) )
|
||||
except TypeError:
|
||||
setattr(self, key, value)
|
||||
self.glade = None
|
||||
gtk.glade.set_custom_handler(self.custom_handler)
|
||||
self.glade = gtk.glade.XML(self.glade_path, main_widget_name, domain)
|
||||
if main_widget_name:
|
||||
self.main_widget = self.glade.get_widget(main_widget_name)
|
||||
else:
|
||||
self.main_widget = None
|
||||
self.signal_autoconnect()
|
||||
self.new()
|
||||
|
||||
def signal_autoconnect(self):
|
||||
signals = {}
|
||||
for attr_name in dir(self):
|
||||
attr = getattr(self, attr_name)
|
||||
if callable(attr):
|
||||
signals[attr_name] = attr
|
||||
self.glade.signal_autoconnect(signals)
|
||||
|
||||
def custom_handler(self,
|
||||
glade, function_name, widget_name,
|
||||
str1, str2, int1, int2):
|
||||
if hasattr(self, function_name):
|
||||
handler = getattr(self, function_name)
|
||||
return handler(str1, str2, int1, int2)
|
||||
|
||||
def __getattr__(self, name):
|
||||
if name in self:
|
||||
data = self[name]
|
||||
return data
|
||||
else:
|
||||
widget = self.glade.get_widget(name)
|
||||
if widget != None:
|
||||
self[name] = widget
|
||||
return widget
|
||||
else:
|
||||
raise AttributeError, name
|
||||
|
||||
def __setattr__(self, name, value):
|
||||
self[name] = value
|
||||
|
||||
def new(self):
|
||||
pass
|
||||
|
||||
def on_keyboard_interrupt(self):
|
||||
pass
|
||||
|
||||
def gtk_widget_show(self, widget, *args):
|
||||
widget.show()
|
||||
|
||||
def gtk_widget_hide(self, widget, *args):
|
||||
widget.hide()
|
||||
|
||||
def gtk_widget_grab_focus(self, widget, *args):
|
||||
widget.grab_focus()
|
||||
|
||||
def gtk_widget_destroy(self, widget, *args):
|
||||
widget.destroy()
|
||||
|
||||
def gtk_window_activate_default(self, widget, *args):
|
||||
widget.activate_default()
|
||||
|
||||
def gtk_true(self, *args):
|
||||
return gtk.TRUE
|
||||
|
||||
def gtk_false(self, *args):
|
||||
return gtk.FALSE
|
||||
|
||||
def gtk_main_quit(self, *args):
|
||||
gtk.main_quit()
|
||||
|
||||
def main(self):
|
||||
gtk.main()
|
||||
|
||||
def quit(self):
|
||||
gtk.main_quit()
|
||||
|
||||
def run(self):
|
||||
try:
|
||||
self.main()
|
||||
except KeyboardInterrupt:
|
||||
self.on_keyboard_interrupt()
|
||||
'''
|
||||
|
||||
if __name__ == "__main__":
|
||||
exit_code = main()
|
||||
sys.exit(exit_code)
|
||||
33
bin/_old/old/snscan
Executable file
33
bin/_old/old/snscan
Executable file
|
|
@ -0,0 +1,33 @@
|
|||
#!/usr/bin/ruby
|
||||
|
||||
f = 1..255
|
||||
|
||||
#f.each do |line|
|
||||
# puts line
|
||||
# system("ping -c 1 192.168.0.#{line}")
|
||||
|
||||
#pig = IO.popen("ping -c 1 192.168.0.#{line}")
|
||||
#puts pig.gets
|
||||
|
||||
#end
|
||||
|
||||
|
||||
|
||||
count = 0
|
||||
arr = []
|
||||
f.each do |i|
|
||||
arr[i] = Thread.new {
|
||||
#sleep(rand(0)/10.0)
|
||||
|
||||
system("ping -c 1 192.168.0.#{i}")
|
||||
#Thread.current["mycount"] = IO.popen("ping -c 1 192.168.0.#{i}")
|
||||
#Thread.current["mycount"] = count
|
||||
count += 1
|
||||
}
|
||||
end
|
||||
#arr.each {|t| t.join; print t["mycount"], ", " }
|
||||
#puts "count = #{count}"
|
||||
|
||||
|
||||
|
||||
|
||||
8
bin/_old/old/test.sh
Executable file
8
bin/_old/old/test.sh
Executable file
|
|
@ -0,0 +1,8 @@
|
|||
#!/bin/bash
|
||||
|
||||
foo=aaabbbccc; bar=zzz; lop=`echo $foo | sed -e s/aaa/$bar/`; echo $lop
|
||||
|
||||
foo=aaabbbccc; bar=zzz; lop=`echo $foo | sed -e s/aaa/$bar/`; echo $lop
|
||||
|
||||
foo=/home/hanez/fooo; bar=/home/hanez; lop=`echo $foo | sed -e "s|\${bar}|AAAA|"`; echo $lop
|
||||
echo $bar
|
||||
1
bin/_old/old/um_gentoo
Normal file
1
bin/_old/old/um_gentoo
Normal file
|
|
@ -0,0 +1 @@
|
|||
/home/hanez/linux//vmlinux ubda=/home/hanez/projects/linux/Gentoo-2006.1-x86-root_fs mem=128M eth0=tuntap,,,192.168.0.254
|
||||
3
bin/_old/old/upsync
Executable file
3
bin/_old/old/upsync
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
|
||||
rsync --delete -r -v -z /home/www/unixpeople.org/ hanez.org:/var/www/unixpeople.org/www/ --exclude=*~ --exclude=.svn --exclude=config.xml --perms --group --times
|
||||
3
bin/_old/old/upsync2
Executable file
3
bin/_old/old/upsync2
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
|
||||
rsync --delete -r -v -z /data/hanez/unixpeople.org/ hanez.org:/var/www/unixpeople.org/www/ --exclude=*~ --exclude=.svn --delete-excluded --perms --group --times
|
||||
3296
bin/_old/old/winetricks
Executable file
3296
bin/_old/old/winetricks
Executable file
File diff suppressed because it is too large
Load diff
97
bin/_old/old/xw3
Executable file
97
bin/_old/old/xw3
Executable file
|
|
@ -0,0 +1,97 @@
|
|||
#!/bin/bash
|
||||
|
||||
# The XW3 website generator.
|
||||
#
|
||||
# This scipts generates a complete website in plain HTML from a source-
|
||||
# directory containing all content.
|
||||
#
|
||||
# You don't need Apache when using this Software.
|
||||
#
|
||||
# Licensed under the GNU Public License (GPL)
|
||||
#
|
||||
# Copyright: Johannes Findeisen <you@hanez.org>
|
||||
|
||||
|
||||
parseFile()
|
||||
{
|
||||
#$1
|
||||
echo $1
|
||||
echo $2
|
||||
|
||||
if [ $1 = php ]; then
|
||||
echo $PARSER[$1]
|
||||
#$2 >> $3
|
||||
fi
|
||||
}
|
||||
|
||||
if [ ! $1 ]; then
|
||||
echo "Usage: xw3 /path/to/projectroot"
|
||||
exit
|
||||
fi
|
||||
|
||||
PROJECTPATH=$1
|
||||
|
||||
if [ ! -e $PROJECTPATH ] || [ ! -e $PROJECTPATH/xw3.conf ]; then
|
||||
echo "[xw3 error]: Projectpath: $PROJECTPATH does not exist or you have no xw3.conf in there. It seems not to be a xw3 project!"
|
||||
exit
|
||||
fi
|
||||
|
||||
. $PROJECTPATH/xw3.conf
|
||||
|
||||
rm -Rf $OUTPUTDIR/*
|
||||
if [ ! -e $OUTPUTDIR ]; then
|
||||
mkdir $OUTPUTDIR
|
||||
fi
|
||||
|
||||
for i in 1 2 3 4 5; do
|
||||
echo $i
|
||||
#sleep 1
|
||||
done
|
||||
|
||||
for file in `find $PROJECTPATH/input/ -type f -print`
|
||||
do
|
||||
|
||||
filename=`basename $file`
|
||||
dirname=`dirname $file`
|
||||
dirextension=`echo $dirname | sed -e "s|\${PROJECTPATH}\/input||"`
|
||||
#if [ -z $dirextension ]; then
|
||||
# dirextension="."
|
||||
#fi
|
||||
ext=${filename##*.}
|
||||
filenamewoext=${filename%.*}
|
||||
newname=$filenamewoext.$OUTPUTEXTENSION
|
||||
|
||||
if [ -d $PROJECTPATH/input$dirextension ]; then
|
||||
mkdir -p $OUTPUTDIR$dirextension
|
||||
fi
|
||||
|
||||
if [ $ext = php ]; then
|
||||
|
||||
cat $PROJECTPATH/head.html > $OUTPUTDIR$dirextension/$newname
|
||||
|
||||
parseFile php $file $OUTPUTDIR$dirextension/$newname
|
||||
|
||||
cat $PROJECTPATH/foot.html >> $OUTPUTDIR$dirextension/$newname
|
||||
|
||||
# cat $PROJECTPATH/head.html > $OUTPUTDIR$dirextension/$newname
|
||||
# echo `$PHPBIN $file` >> $OUTPUTDIR$dirextension/$newname
|
||||
# cat $PROJECTPATH/foot.html >> $OUTPUTDIR$dirextension/$newname
|
||||
|
||||
elif [ $ext = html ] || [ $ext = htm ]; then
|
||||
cat $PROJECTPATH/head.html > $OUTPUTDIR$dirextension/$newname
|
||||
cat $PROJECTPATH/input$dirextension/$filename >> $OUTPUTDIR$dirextension/$newname
|
||||
cat $PROJECTPATH/foot.html >> $OUTPUTDIR$dirextension/$newname
|
||||
elif [ $ext = jpeg ] || [ $ext = jpg ] || [ $ext = png ] || [ $ext = gif ]; then
|
||||
cp $PROJECTPATH/input$dirextension/$filename $OUTPUTDIR$dirextension/$filename
|
||||
elif [ $ext = "" ]; then
|
||||
cat $PROJECTPATH/head.html > $OUTPUTDIR$dirextension/$newname
|
||||
echo `sh -c $PROJECTPATH/input$dirextension/$filename` >> $OUTPUTDIR$dirextension/$newname
|
||||
cat $PROJECTPATH/foot.html >> $OUTPUTDIR$dirextension/$newname
|
||||
fi
|
||||
# if --verbose
|
||||
echo $dirextension/$newname"... Finished!"
|
||||
done
|
||||
|
||||
cp -r $PROJECTPATH/content/* $OUTPUTDIR/
|
||||
|
||||
echo "Finished... ;)"
|
||||
79
bin/_old/old/xw32
Executable file
79
bin/_old/old/xw32
Executable file
|
|
@ -0,0 +1,79 @@
|
|||
#!/bin/bash
|
||||
|
||||
# The XW3 website generator.
|
||||
#
|
||||
# This scipts generates a complete website in plain HTML from a source-
|
||||
# directory containing all content.
|
||||
#
|
||||
# You don't need Apache when using this Software.
|
||||
#
|
||||
# Licensed under the GNU Public License (GPL)
|
||||
#
|
||||
# Copyright: Johannes Findeisen <you@hanez.org>
|
||||
|
||||
# Commandline parameter / .xw3 settings
|
||||
#PROJECTDIR - use this if .xw3 exists
|
||||
PROJECTPATH=/home/hanez/wg
|
||||
OUTPUTEXTENSION=html
|
||||
#UPLOAD=ssh,scp,ftp
|
||||
#HOST=hanez.org
|
||||
#USERNAME=Foo
|
||||
#PASSWORD=Bar
|
||||
|
||||
# LANGUAGE FORMAT
|
||||
# 0 = /path/to/file/filename.LN.html (default)
|
||||
# 1 = /LN/path/to/file/filename.html
|
||||
# LN = the language code you use e.g. en, de etc.
|
||||
LANGUAGE_FORMAT=0
|
||||
|
||||
# Static configuration variables
|
||||
OUTPUTDIR=$PROJECTPATH/output
|
||||
PHPBIN=/usr/bin/php
|
||||
PERLBIN=/usr/bin/perl
|
||||
PYTHONBIN=/usr/bin/python
|
||||
|
||||
# Execute
|
||||
rm -Rf $OUTPUTDIR/*
|
||||
if [ ! -e $dirname ]; then
|
||||
mkdir $OUTPUTDIR
|
||||
fi
|
||||
|
||||
for file in `find $PROJECTPATH/input/ -type f -print`
|
||||
do
|
||||
|
||||
filename=`basename $file`
|
||||
dirname=`dirname $file`
|
||||
dirextension=`echo $dirname | sed -e "s|\${PROJECTPATH}\/input||"`
|
||||
#if [ -z $dirextension ]; then
|
||||
# dirextension="."
|
||||
#fi
|
||||
ext=${filename##*.}
|
||||
filenamewoext=${filename%.*}
|
||||
newname=$filenamewoext.$OUTPUTEXTENSION
|
||||
|
||||
if [ -d $PROJECTPATH/input$dirextension ]; then
|
||||
mkdir -p $OUTPUTDIR$dirextension
|
||||
fi
|
||||
|
||||
if [ $ext = php ]; then
|
||||
cat $PROJECTPATH/head.html > $OUTPUTDIR$dirextension/$newname
|
||||
echo `$PHPBIN $file` >> $OUTPUTDIR$dirextension/$newname
|
||||
cat $PROJECTPATH/foot.html >> $OUTPUTDIR$dirextension/$newname
|
||||
elif [ $ext = html ] || [ $ext = htm ]; then
|
||||
cat $PROJECTPATH/head.html > $OUTPUTDIR$dirextension/$newname
|
||||
cat $PROJECTPATH/input$dirextension/$filename >> $OUTPUTDIR$dirextension/$newname
|
||||
cat $PROJECTPATH/foot.html >> $OUTPUTDIR$dirextension/$newname
|
||||
elif [ $ext = jpeg ] || [ $ext = jpg ] || [ $ext = png ] || [ $ext = gif ]; then
|
||||
cp $PROJECTPATH/input$dirextension/$filename $OUTPUTDIR$dirextension/$filename
|
||||
elif [ $ext = "" ]; then
|
||||
cat $PROJECTPATH/head.html > $OUTPUTDIR$dirextension/$newname
|
||||
echo `sh -c $PROJECTPATH/input$dirextension/$filename` >> $OUTPUTDIR$dirextension/$newname
|
||||
cat $PROJECTPATH/foot.html >> $OUTPUTDIR$dirextension/$newname
|
||||
fi
|
||||
# if --verbose
|
||||
echo $dirextension/$newname"... Finished!"
|
||||
done
|
||||
|
||||
cp -r $PROJECTPATH/content/* $OUTPUTDIR/
|
||||
|
||||
echo "Finished... ;)"
|
||||
11
bin/_old/old/you@hanez.org.sh
Executable file
11
bin/_old/old/you@hanez.org.sh
Executable file
|
|
@ -0,0 +1,11 @@
|
|||
#!/bin/bash
|
||||
echo "Johannes Findeisen | Lokstedter Weg 100 | 20251 Hamburg | Germany"
|
||||
echo ""
|
||||
echo "Let's rock the web!!!"
|
||||
echo "(Lassen Sie uns das Netz schaukeln!!!) translated by google.com"
|
||||
echo ""
|
||||
echo "Key Lookup:"
|
||||
echo " http://pgp.mit.edu:11371/pks/lookup?op=vindex&search=0xF58D4435"
|
||||
gpg --fingerprint you@hanez.org
|
||||
#echo "Take a look @:"
|
||||
#echo "http://www.againsttcpa.com/ | http://petition.eurolinux.org/ | http://www.opensource.org/ | http://www.gentoo.org/ | http://kde.org/"
|
||||
2
bin/_old/old/zynkx
Executable file
2
bin/_old/old/zynkx
Executable file
|
|
@ -0,0 +1,2 @@
|
|||
#!/bin/sh
|
||||
exec /usr/bin/mono /home/hanez/projects/zynk/Zynk.exe "$@"
|
||||
3
bin/_old/old/zysync
Executable file
3
bin/_old/old/zysync
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
|
||||
rsync --delete -r -v -z /home/www/zynk.org/ zynk.org:/var/www/zynk.org/www/ --exclude=*~ --exclude=.svn --exclude=tmp.txt --exclude=cache/* --exclude=comments/* --perms --group --times
|
||||
789
bin/_old/old2/automysqlbackup-2.5.1-01.sh
Executable file
789
bin/_old/old2/automysqlbackup-2.5.1-01.sh
Executable file
|
|
@ -0,0 +1,789 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# MySQL Backup Script
|
||||
# VER. 2.5.1 - http://sourceforge.net/projects/automysqlbackup/
|
||||
# Copyright (c) 2002-2003 wipe_out@lycos.co.uk
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
#=====================================================================
|
||||
#=====================================================================
|
||||
# Set the following variables to your system needs
|
||||
# (Detailed instructions below variables)
|
||||
#=====================================================================
|
||||
#set -x
|
||||
CONFIGFILE="/etc/automysqlbackup/automysqlbackup.conf"
|
||||
|
||||
if [ -r ${CONFIGFILE} ]; then
|
||||
# Read the configfile if it's existing and readable
|
||||
source ${CONFIGFILE}
|
||||
else
|
||||
# do inline-config otherwise
|
||||
# To create a configfile just copy the code between "### START CFG ###" and "### END CFG ###"
|
||||
# to /etc/automysqlbackup/automysqlbackup.conf. After that you're able to upgrade this script
|
||||
# (copy a new version to its location) without the need for editing it.
|
||||
### START CFG ###
|
||||
# Username to access the MySQL server e.g. dbuser
|
||||
USERNAME=root
|
||||
|
||||
# Password to access the MySQL server e.g. password
|
||||
PASSWORD=root
|
||||
|
||||
# Host name (or IP address) of MySQL server e.g localhost
|
||||
DBHOST=127.0.0.1
|
||||
|
||||
# List of DBNAMES for Daily/Weekly Backup e.g. "DB1 DB2 DB3"
|
||||
DBNAMES="all"
|
||||
|
||||
# Backup directory location e.g /backups
|
||||
BACKUPDIR="/home/backup/db"
|
||||
|
||||
# Mail setup
|
||||
# What would you like to be mailed to you?
|
||||
# - log : send only log file
|
||||
# - files : send log file and sql files as attachments (see docs)
|
||||
# - stdout : will simply output the log to the screen if run manually.
|
||||
# - quiet : Only send logs if an error occurs to the MAILADDR.
|
||||
MAILCONTENT="log"
|
||||
|
||||
# Set the maximum allowed email size in k. (4000 = approx 5MB email [see docs])
|
||||
MAXATTSIZE="4000"
|
||||
|
||||
# Email Address to send mail to? (user@domain.com)
|
||||
MAILADDR="you@hanez.org"
|
||||
|
||||
|
||||
# ============================================================
|
||||
# === ADVANCED OPTIONS ( Read the doc's below for details )===
|
||||
#=============================================================
|
||||
|
||||
# List of DBBNAMES for Monthly Backups.
|
||||
MDBNAMES="${DBNAMES}"
|
||||
|
||||
# List of DBNAMES to EXLUCDE if DBNAMES are set to all (must be in " quotes)
|
||||
DBEXCLUDE=""
|
||||
|
||||
# Include CREATE DATABASE in backup?
|
||||
CREATE_DATABASE=yes
|
||||
|
||||
# Separate backup directory and file for each DB? (yes or no)
|
||||
SEPDIR=yes
|
||||
|
||||
# Which day do you want weekly backups? (1 to 7 where 1 is Monday)
|
||||
DOWEEKLY=6
|
||||
|
||||
# Choose Compression type. (gzip or bzip2)
|
||||
COMP=gzip
|
||||
|
||||
# Compress communications between backup server and MySQL server?
|
||||
COMMCOMP=no
|
||||
|
||||
# Additionally keep a copy of the most recent backup in a seperate directory.
|
||||
LATEST=no
|
||||
|
||||
# The maximum size of the buffer for client/server communication. e.g. 16MB (maximum is 1GB)
|
||||
MAX_ALLOWED_PACKET=
|
||||
|
||||
# For connections to localhost. Sometimes the Unix socket file must be specified.
|
||||
SOCKET=
|
||||
|
||||
# Command to run before backups (uncomment to use)
|
||||
#PREBACKUP="/etc/mysql-backup-pre"
|
||||
|
||||
# Command run after backups (uncomment to use)
|
||||
#POSTBACKUP="/etc/mysql-backup-post"
|
||||
### END CFG ###
|
||||
fi
|
||||
|
||||
#=====================================================================
|
||||
# Options documantation
|
||||
#=====================================================================
|
||||
# Set USERNAME and PASSWORD of a user that has the appropriate permissions
|
||||
# to backup ALL databases. (See mysql documentation for details)
|
||||
# NEW in 2.5.1:
|
||||
# - If USERNAME is set to "debian" and PASSWORD is unset or "" obtain
|
||||
# them from the file /etc/mysql/debian.cnf
|
||||
# - First command line option "-c" for configfile
|
||||
# - Interpretable Exit-States:
|
||||
# 1: given configfile is not readable or does not exist
|
||||
# 2: unknown option
|
||||
#
|
||||
# Set the DBHOST option to the server you wish to backup, leave the
|
||||
# default to backup "this server".(to backup multiple servers make
|
||||
# copies of this file and set the options for that server)
|
||||
#
|
||||
# Put in the list of DBNAMES(Databases)to be backed up. If you would like
|
||||
# to backup ALL DBs on the server set DBNAMES="all".(if set to "all" then
|
||||
# any new DBs will automatically be backed up without needing to modify
|
||||
# this backup script when a new DB is created).
|
||||
#
|
||||
# If the DB you want to backup has a space in the name replace the space
|
||||
# with a % e.g. "data base" will become "data%base"
|
||||
# NOTE: Spaces in DB names may not work correctly when SEPDIR=no.
|
||||
#
|
||||
# You can change the backup storage location from /backups to anything
|
||||
# you like by using the BACKUPDIR setting..
|
||||
#
|
||||
# The MAILCONTENT and MAILADDR options and pretty self explanitory, use
|
||||
# these to have the backup log mailed to you at any email address or multiple
|
||||
# email addresses in a space seperated list.
|
||||
# (If you set mail content to "log" you will require access to the "mail" program
|
||||
# on your server. If you set this to "files" you will have to have mutt installed
|
||||
# on your server. If you set it to "stdout" it will log to the screen if run from
|
||||
# the console or to the cron job owner if run through cron. If you set it to "quiet"
|
||||
# logs will only be mailed if there are errors reported. )
|
||||
#
|
||||
# MAXATTSIZE sets the largest allowed email attachments total (all backup files) you
|
||||
# want the script to send. This is the size before it is encoded to be sent as an email
|
||||
# so if your mail server will allow a maximum mail size of 5MB I would suggest setting
|
||||
# MAXATTSIZE to be 25% smaller than that so a setting of 4000 would probably be fine.
|
||||
#
|
||||
# Finally copy automysqlbackup.sh to anywhere on your server and make sure
|
||||
# to set executable permission. You can also copy the script to
|
||||
# /etc/cron.daily to have it execute automatically every night or simply
|
||||
# place a symlink in /etc/cron.daily to the file if you wish to keep it
|
||||
# somwhere else.
|
||||
# NOTE:On Debian copy the file with no extention for it to be run
|
||||
# by cron e.g just name the file "automysqlbackup"
|
||||
#
|
||||
# Thats it..
|
||||
#
|
||||
#
|
||||
# === Advanced options doc's ===
|
||||
#
|
||||
# The list of MDBNAMES is the DB's to be backed up only monthly. You should
|
||||
# always include "mysql" in this list to backup your user/password
|
||||
# information along with any other DBs that you only feel need to
|
||||
# be backed up monthly. (if using a hosted server then you should
|
||||
# probably remove "mysql" as your provider will be backing this up)
|
||||
# NOTE: If DBNAMES="all" then MDBNAMES has no effect as all DBs will be backed
|
||||
# up anyway.
|
||||
#
|
||||
# If you set DBNAMES="all" you can configure the option DBEXCLUDE. Other
|
||||
# wise this option will not be used.
|
||||
# This option can be used if you want to backup all dbs, but you want
|
||||
# exclude some of them. (eg. a db is to big).
|
||||
#
|
||||
# Set CREATE_DATABASE to "yes" (the default) if you want your SQL-Dump to create
|
||||
# a database with the same name as the original database when restoring.
|
||||
# Saying "no" here will allow your to specify the database name you want to
|
||||
# restore your dump into, making a copy of the database by using the dump
|
||||
# created with automysqlbackup.
|
||||
# NOTE: Not used if SEPDIR=no
|
||||
#
|
||||
# The SEPDIR option allows you to choose to have all DBs backed up to
|
||||
# a single file (fast restore of entire server in case of crash) or to
|
||||
# seperate directories for each DB (each DB can be restored seperately
|
||||
# in case of single DB corruption or loss).
|
||||
#
|
||||
# To set the day of the week that you would like the weekly backup to happen
|
||||
# set the DOWEEKLY setting, this can be a value from 1 to 7 where 1 is Monday,
|
||||
# The default is 6 which means that weekly backups are done on a Saturday.
|
||||
#
|
||||
# COMP is used to choose the copmression used, options are gzip or bzip2.
|
||||
# bzip2 will produce slightly smaller files but is more processor intensive so
|
||||
# may take longer to complete.
|
||||
#
|
||||
# COMMCOMP is used to enable or diable mysql client to server compression, so
|
||||
# it is useful to save bandwidth when backing up a remote MySQL server over
|
||||
# the network.
|
||||
#
|
||||
# LATEST is to store an additional copy of the latest backup to a standard
|
||||
# location so it can be downloaded bt thrid party scripts.
|
||||
#
|
||||
# If the DB's being backed up make use of large BLOB fields then you may need
|
||||
# to increase the MAX_ALLOWED_PACKET setting, for example 16MB..
|
||||
#
|
||||
# When connecting to localhost as the DB server (DBHOST=localhost) sometimes
|
||||
# the system can have issues locating the socket file.. This can now be set
|
||||
# using the SOCKET parameter.. An example may be SOCKET=/private/tmp/mysql.sock
|
||||
#
|
||||
# Use PREBACKUP and POSTBACKUP to specify Per and Post backup commands
|
||||
# or scripts to perform tasks either before or after the backup process.
|
||||
#
|
||||
#
|
||||
#=====================================================================
|
||||
# Backup Rotation..
|
||||
#=====================================================================
|
||||
#
|
||||
# Daily Backups are rotated weekly..
|
||||
# Weekly Backups are run by default on Saturday Morning when
|
||||
# cron.daily scripts are run...Can be changed with DOWEEKLY setting..
|
||||
# Weekly Backups are rotated on a 5 week cycle..
|
||||
# Monthly Backups are run on the 1st of the month..
|
||||
# Monthly Backups are rotated on a 5 month cycle...
|
||||
# It may be a good idea to copy Monthly backups offline or to another
|
||||
# server..
|
||||
#
|
||||
#=====================================================================
|
||||
# Please Note!!
|
||||
#=====================================================================
|
||||
#
|
||||
# I take no resposibility for any data loss or corruption when using
|
||||
# this script..
|
||||
# This script will not help in the event of a hard drive crash. If a
|
||||
# copy of the backup has not be stored offline or on another PC..
|
||||
# You should copy your backups offline regularly for best protection.
|
||||
#
|
||||
# Happy backing up...
|
||||
#
|
||||
#=====================================================================
|
||||
# Restoring
|
||||
#=====================================================================
|
||||
# Firstly you will need to uncompress the backup file.
|
||||
# eg.
|
||||
# gunzip file.gz (or bunzip2 file.bz2)
|
||||
#
|
||||
# Next you will need to use the mysql client to restore the DB from the
|
||||
# sql file.
|
||||
# eg.
|
||||
# mysql --user=username --pass=password --host=dbserver database < /path/file.sql
|
||||
# or
|
||||
# mysql --user=username --pass=password --host=dbserver -e "source /path/file.sql" database
|
||||
#
|
||||
# NOTE: Make sure you use "<" and not ">" in the above command because
|
||||
# you are piping the file.sql to mysql and not the other way around.
|
||||
#
|
||||
# Lets hope you never have to use this.. :)
|
||||
#
|
||||
#=====================================================================
|
||||
# Change Log
|
||||
#=====================================================================
|
||||
#
|
||||
# VER 2.5.1-01 - (2010-07-06)
|
||||
# - Fixed pathname bug item #3025849 (by Johannes Kolter)
|
||||
# VER 2.5.1 - (2010-07-04)
|
||||
# - Added support for default and optional config file (by Johannes Kolter)
|
||||
# - Rotating after backup was successful whith find(1) (by Johannes Kolter)
|
||||
# - Implementation of Variables containing full path to binaries to
|
||||
# avoid possibly confusion with aliases or builtins. (by Johannes Kolter)
|
||||
# - Fixed bug where weekly backups were not being rotated.
|
||||
# Added rotation of 5 monthly backups
|
||||
# Now all old backups are deleted, not only the most recent one
|
||||
# (inspired by oleg@bintime.com)
|
||||
# - Use Debian special-file to access database (by Johannes Kolter)
|
||||
# - Fixed bug ID: 1438565
|
||||
# Moved IO redirection to a place before decicions are made and actions are taken.
|
||||
# (inspired by Derk Bernhardt)
|
||||
# - Fixed bug ID: #3000316 (reported by Sascha Feldhorst)
|
||||
# - Fixed bug ID: #1529458 (reported by Natalie ( njwood ))
|
||||
# - Fixed bug ID: #1548919 (reported by Piotr Kuczynski)
|
||||
# VER 2.5 - (2006-01-15)
|
||||
# Added support for setting MAXIMUM_PACKET_SIZE and SOCKET parameters (suggested by Yvo van Doorn)
|
||||
# VER 2.4 - (2006-01-23)
|
||||
# Fixed bug where weekly backups were not being rotated. (Fix by wolf02)
|
||||
# Added hour an min to backup filename for the case where backups are taken multiple
|
||||
# times in a day. NOTE This is not complete support for mutiple executions of the script
|
||||
# in a single day.
|
||||
# Added MAILCONTENT="quiet" option, see docs for details. (requested by snowsam)
|
||||
# Updated path statment for compatibility with OSX.
|
||||
# Added "LATEST" to additionally store the last backup to a standard location. (request by Grant29)
|
||||
# VER 2.3 - (2005-11-07)
|
||||
# Better error handling and notification of errors (a long time coming)
|
||||
# Compression on Backup server to MySQL server communications.
|
||||
# VER 2.2 - (2004-12-05)
|
||||
# Changed from using depricated "-N" to "--skip-column-names".
|
||||
# Added ability to have compressed backup's emailed out. (code from Thomas Heiserowski)
|
||||
# Added maximum attachment size setting.
|
||||
# VER 2.1 - (2004-11-04)
|
||||
# Fixed a bug in daily rotation when not using gzip compression. (Fix by Rob Rosenfeld)
|
||||
# VER 2.0 - (2004-07-28)
|
||||
# Switched to using IO redirection instead of pipeing the output to the logfile.
|
||||
# Added choice of compression of backups being gzip of bzip2.
|
||||
# Switched to using functions to facilitate more functionality.
|
||||
# Added option of either gzip or bzip2 compression.
|
||||
# VER 1.10 - (2004-07-17)
|
||||
# Another fix for spaces in the paths (fix by Thomas von Eyben)
|
||||
# Fixed bug when using PREBACKUP and POSTBACKUP commands containing many arguments.
|
||||
# VER 1.9 - (2004-05-25)
|
||||
# Small bug fix to handle spaces in LOGFILE path which contains spaces (reported by Thomas von Eyben)
|
||||
# Updated docs to mention that Log email can be sent to multiple email addresses.
|
||||
# VER 1.8 - (2004-05-01)
|
||||
# Added option to make backups restorable to alternate database names
|
||||
# meaning that a copy of the database can be created (Based on patch by Rene Hoffmann)
|
||||
# Seperated options into standard and advanced.
|
||||
# Removed " from single file dump DBMANES because it caused an error but
|
||||
# this means that if DB's have spaces in the name they will not dump when SEPDIR=no.
|
||||
# Added -p option to mkdir commands to create multiple subdirs without error.
|
||||
# Added disk usage and location to the bottom of the backup report.
|
||||
# VER 1.7 - (2004-04-22)
|
||||
# Fixed an issue where weelky backups would only work correctly if server
|
||||
# locale was set to English (issue reported by Tom Ingberg)
|
||||
# used "eval" for "rm" commands to try and resolve rotation issues.
|
||||
# Changed name of status log so multiple scripts can be run at the same time.
|
||||
# VER 1.6 - (2004-03-14)
|
||||
# Added PREBACKUP and POSTBACKUP command functions. (patch by markpustjens)
|
||||
# Added support for backing up DB's with Spaces in the name.
|
||||
# (patch by markpustjens)
|
||||
# VER 1.5 - (2004-02-24)
|
||||
# Added the ability to exclude DB's when the "all" option is used.
|
||||
# (Patch by kampftitan)
|
||||
# VER 1.4 - (2004-02-02)
|
||||
# Project moved to Sourceforge.net
|
||||
# VER 1.3 - (2003-09-25)
|
||||
# Added support for backing up "all" databases on the server without
|
||||
# having to list each one seperately in the configuration.
|
||||
# Added DB restore instructions.
|
||||
# VER 1.2 - (2003-03-16)
|
||||
# Added server name to the backup log so logs from multiple servers
|
||||
# can be easily identified.
|
||||
# VER 1.1 - (2003-03-13)
|
||||
# Small Bug fix in monthly report. (Thanks Stoyanski)
|
||||
# Added option to email log to any email address. (Inspired by Stoyanski)
|
||||
# Changed Standard file name to .sh extention.
|
||||
# Option are set using yes and no rather than 1 or 0.
|
||||
# VER 1.0 - (2003-01-30)
|
||||
# Added the ability to have all databases backup to a single dump
|
||||
# file or seperate directory and file for each database.
|
||||
# Output is better for log keeping.
|
||||
# VER 0.6 - (2003-01-22)
|
||||
# Bug fix for daily directory (Added in VER 0.5) rotation.
|
||||
# VER 0.5 - (2003-01-20)
|
||||
# Added "daily" directory for daily backups for neatness (suggestion by Jason)
|
||||
# Added DBHOST option to allow backing up a remote server (Suggestion by Jason)
|
||||
# Added "--quote-names" option to mysqldump command.
|
||||
# Bug fix for handling the last and first of the year week rotation.
|
||||
# VER 0.4 - (2002-11-06)
|
||||
# Added the abaility for the script to create its own directory structure.
|
||||
# VER 0.3 - (2002-10-01)
|
||||
# Changed Naming of Weekly backups so they will show in order.
|
||||
# VER 0.2 - (2002-09-27)
|
||||
# Corrected weekly rotation logic to handle weeks 0 - 10
|
||||
# VER 0.1 - (2002-09-21)
|
||||
# Initial Release
|
||||
#
|
||||
#=====================================================================
|
||||
#=====================================================================
|
||||
#=====================================================================
|
||||
#
|
||||
# Should not need to be modified from here down!!
|
||||
#
|
||||
#=====================================================================
|
||||
#=====================================================================
|
||||
#=====================================================================
|
||||
#
|
||||
# Full pathname to binaries to avoid problems with aliases and builtins etc.
|
||||
#
|
||||
WHICH="`which which`"
|
||||
AWK="`${WHICH} gawk`"
|
||||
LOGGER="`${WHICH} logger`"
|
||||
ECHO="`${WHICH} echo`"
|
||||
CAT="`${WHICH} cat`"
|
||||
BASENAME="`${WHICH} basename`"
|
||||
DATEC="`${WHICH} date`"
|
||||
DU="`${WHICH} du`"
|
||||
EXPR="`${WHICH} expr`"
|
||||
FIND="`${WHICH} find`"
|
||||
RM="`${WHICH} rm`"
|
||||
MYSQL="`${WHICH} mysql`"
|
||||
MYSQLDUMP="`${WHICH} mysqldump`"
|
||||
GZIP="`${WHICH} gzip`"
|
||||
BZIP2="`${WHICH} bzip2`"
|
||||
CP="`${WHICH} cp`"
|
||||
HOSTNAMEC="`${WHICH} hostname`"
|
||||
SED="`${WHICH} sed`"
|
||||
GREP="`${WHICH} grep`"
|
||||
|
||||
function get_debian_pw() {
|
||||
if [ -r /etc/mysql/debian.cnf ]; then
|
||||
eval $(${AWK} '
|
||||
! user && /^[[:space:]]*user[[:space:]]*=[[:space:]]*/ {
|
||||
print "USERNAME=" gensub(/.+[[:space:]]+([^[:space:]]+)[[:space:]]*$/, "\\1", "1"); user++
|
||||
}
|
||||
! pass && /^[[:space:]]*password[[:space:]]*=[[:space:]]*/ {
|
||||
print "PASSWORD=" gensub(/.+[[:space:]]+([^[:space:]]+)[[:space:]]*$/, "\\1", "1"); pass++
|
||||
}' /etc/mysql/debian.cnf
|
||||
)
|
||||
else
|
||||
${LOGGER} "${PROGNAME}: File \"/etc/mysql/debian.cnf\" not found."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
[ "x${USERNAME}" = "xdebian" -a "x${PASSWORD}" = "x" ] && get_debian_pw
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case $1 in
|
||||
-c)
|
||||
if [ -r "$2" ]; then
|
||||
source "$2"
|
||||
shift 2
|
||||
else
|
||||
${ECHO} "Ureadable config file \"$2\""
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
${ECHO} "Unknown Option \"$1\""
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
export LC_ALL=C
|
||||
PROGNAME=`${BASENAME} $0`
|
||||
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/mysql/bin
|
||||
DATE=`${DATEC} +%Y-%m-%d_%Hh%Mm` # Datestamp e.g 2002-09-21
|
||||
DOW=`${DATEC} +%A` # Day of the week e.g. Monday
|
||||
DNOW=`${DATEC} +%u` # Day number of the week 1 to 7 where 1 represents Monday
|
||||
DOM=`${DATEC} +%d` # Date of the Month e.g. 27
|
||||
M=`${DATEC} +%B` # Month e.g January
|
||||
W=`${DATEC} +%V` # Week Number e.g 37
|
||||
VER=2.5.1 # Version Number
|
||||
LOGFILE=${BACKUPDIR}/${DBHOST}-`${DATEC} +%N`.log # Logfile Name
|
||||
LOGERR=${BACKUPDIR}/ERRORS_${DBHOST}-`${DATEC} +%N`.log # Logfile Name
|
||||
BACKUPFILES=""
|
||||
OPT="--quote-names --opt" # OPT string for use with mysqldump ( see man mysqldump )
|
||||
|
||||
# IO redirection for logging.
|
||||
touch ${LOGFILE}
|
||||
exec 6>&1 # Link file descriptor #6 with stdout.
|
||||
# Saves stdout.
|
||||
exec > ${LOGFILE} # stdout replaced with file ${LOGFILE}.
|
||||
touch ${LOGERR}
|
||||
exec 7>&2 # Link file descriptor #7 with stderr.
|
||||
# Saves stderr.
|
||||
exec 2> ${LOGERR} # stderr replaced with file ${LOGERR}.
|
||||
|
||||
# Add --compress mysqldump option to ${OPT}
|
||||
if [ "${COMMCOMP}" = "yes" ];
|
||||
then
|
||||
OPT="${OPT} --compress"
|
||||
fi
|
||||
|
||||
# Add --max_allowed_packet=... mysqldump option to ${OPT}
|
||||
if [ "${MAX_ALLOWED_PACKET}" ];
|
||||
then
|
||||
OPT="${OPT} --max_allowed_packet=${MAX_ALLOWED_PACKET}"
|
||||
fi
|
||||
|
||||
# Create required directories
|
||||
if [ ! -e "${BACKUPDIR}" ] # Check Backup Directory exists.
|
||||
then
|
||||
mkdir -p "${BACKUPDIR}"
|
||||
fi
|
||||
|
||||
if [ ! -e "${BACKUPDIR}/daily" ] # Check Daily Directory exists.
|
||||
then
|
||||
mkdir -p "${BACKUPDIR}/daily"
|
||||
fi
|
||||
|
||||
if [ ! -e "${BACKUPDIR}/weekly" ] # Check Weekly Directory exists.
|
||||
then
|
||||
mkdir -p "${BACKUPDIR}/weekly"
|
||||
fi
|
||||
|
||||
if [ ! -e "${BACKUPDIR}/monthly" ] # Check Monthly Directory exists.
|
||||
then
|
||||
mkdir -p "${BACKUPDIR}/monthly"
|
||||
fi
|
||||
|
||||
if [ "${LATEST}" = "yes" ]
|
||||
then
|
||||
if [ ! -e "${BACKUPDIR}/latest" ] # Check Latest Directory exists.
|
||||
then
|
||||
mkdir -p "${BACKUPDIR}/latest"
|
||||
fi
|
||||
eval ${RM} -fv "${BACKUPDIR}/latest/*"
|
||||
fi
|
||||
|
||||
|
||||
# Functions
|
||||
|
||||
# Database dump function
|
||||
dbdump () {
|
||||
${MYSQLDUMP} --user=${USERNAME} --password=${PASSWORD} --host=${DBHOST} ${OPT} ${1} > ${2}
|
||||
return $?
|
||||
}
|
||||
|
||||
# Compression function plus latest copy
|
||||
SUFFIX=""
|
||||
compression () {
|
||||
if [ "${COMP}" = "gzip" ]; then
|
||||
${GZIP} -f "${1}"
|
||||
${ECHO}
|
||||
${ECHO} Backup Information for "${1}"
|
||||
${GZIP} -l "${1}.gz"
|
||||
SUFFIX=".gz"
|
||||
elif [ "${COMP}" = "bzip2" ]; then
|
||||
${ECHO} Compression information for "${1}.bz2"
|
||||
${BZIP2} -f -v ${1} 2>&1
|
||||
SUFFIX=".bz2"
|
||||
else
|
||||
${ECHO} "No compression option set, check advanced settings"
|
||||
fi
|
||||
if [ "${LATEST}" = "yes" ]; then
|
||||
${CP} ${1}${SUFFIX} "${BACKUPDIR}/latest/"
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
# Run command before we begin
|
||||
if [ "${PREBACKUP}" ]
|
||||
then
|
||||
${ECHO} ======================================================================
|
||||
${ECHO} "Prebackup command output."
|
||||
${ECHO}
|
||||
eval ${PREBACKUP}
|
||||
${ECHO}
|
||||
${ECHO} ======================================================================
|
||||
${ECHO}
|
||||
fi
|
||||
|
||||
|
||||
if [ "${SEPDIR}" = "yes" ]; then # Check if CREATE DATABSE should be included in Dump
|
||||
if [ "${CREATE_DATABASE}" = "no" ]; then
|
||||
OPT="${OPT} --no-create-db"
|
||||
else
|
||||
OPT="${OPT} --databases"
|
||||
fi
|
||||
else
|
||||
OPT="${OPT} --databases"
|
||||
fi
|
||||
|
||||
# Hostname for LOG information
|
||||
if [ "${DBHOST}" = "localhost" ]; then
|
||||
HOST=`${HOSTNAMEC}`
|
||||
if [ "${SOCKET}" ]; then
|
||||
OPT="${OPT} --socket=${SOCKET}"
|
||||
fi
|
||||
else
|
||||
HOST=${DBHOST}
|
||||
fi
|
||||
|
||||
# If backing up all DBs on the server
|
||||
if [ "${DBNAMES}" = "all" ]; then
|
||||
DBNAMES="`${MYSQL} --user=${USERNAME} --password=${PASSWORD} --host=${DBHOST} --batch --skip-column-names -e "show databases"| ${SED} 's/ /%/g'`"
|
||||
|
||||
# If DBs are excluded
|
||||
for exclude in ${DBEXCLUDE}
|
||||
do
|
||||
DBNAMES=`${ECHO} ${DBNAMES} | ${SED} "s/\b${exclude}\b//g"`
|
||||
done
|
||||
|
||||
MDBNAMES=${DBNAMES}
|
||||
fi
|
||||
|
||||
${ECHO} ======================================================================
|
||||
${ECHO} AutoMySQLBackup VER ${VER}
|
||||
${ECHO} http://sourceforge.net/projects/automysqlbackup/
|
||||
${ECHO}
|
||||
${ECHO} Backup of Database Server - ${HOST}
|
||||
${ECHO} ======================================================================
|
||||
|
||||
# Test is seperate DB backups are required
|
||||
if [ "${SEPDIR}" = "yes" ]; then
|
||||
${ECHO} Backup Start Time `${DATEC}`
|
||||
${ECHO} ======================================================================
|
||||
# Monthly Full Backup of all Databases
|
||||
if [ ${DOM} = "01" ]; then
|
||||
for MDB in ${MDBNAMES}
|
||||
do
|
||||
|
||||
# Prepare ${DB} for using
|
||||
MDB="`${ECHO} ${MDB} | ${SED} 's/%/ /g'`"
|
||||
|
||||
if [ ! -e "${BACKUPDIR}/monthly/${MDB}" ] # Check Monthly DB Directory exists.
|
||||
then
|
||||
mkdir -p "${BACKUPDIR}/monthly/${MDB}"
|
||||
fi
|
||||
${ECHO} Monthly Backup of ${MDB}...
|
||||
dbdump "${MDB}" "${BACKUPDIR}/monthly/${MDB}/${MDB}_${DATE}.${M}.${MDB}.sql"
|
||||
[ $? -eq 0 ] && {
|
||||
${ECHO} "Rotating 5 month backups for ${MDB}"
|
||||
${FIND} "${BACKUPDIR}/monthly/${MDB}" -mtime +150 -type f -exec ${RM} -v {} \;
|
||||
}
|
||||
compression "${BACKUPDIR}/monthly/${MDB}/${MDB}_${DATE}.${M}.${MDB}.sql"
|
||||
BACKUPFILES="${BACKUPFILES} ${BACKUPDIR}/monthly/${MDB}/${MDB}_${DATE}.${M}.${MDB}.sql${SUFFIX}"
|
||||
${ECHO} ----------------------------------------------------------------------
|
||||
done
|
||||
fi
|
||||
|
||||
for DB in ${DBNAMES}
|
||||
do
|
||||
# Prepare ${DB} for using
|
||||
DB="`${ECHO} ${DB} | ${SED} 's/%/ /g'`"
|
||||
|
||||
# Create Seperate directory for each DB
|
||||
if [ ! -e "${BACKUPDIR}/daily/${DB}" ] # Check Daily DB Directory exists.
|
||||
then
|
||||
mkdir -p "${BACKUPDIR}/daily/${DB}"
|
||||
fi
|
||||
|
||||
if [ ! -e "${BACKUPDIR}/weekly/${DB}" ] # Check Weekly DB Directory exists.
|
||||
then
|
||||
mkdir -p "${BACKUPDIR}/weekly/${DB}"
|
||||
fi
|
||||
|
||||
# Weekly Backup
|
||||
if [ ${DNOW} = ${DOWEEKLY} ]; then
|
||||
${ECHO} Weekly Backup of Database \( ${DB} \)
|
||||
${ECHO}
|
||||
dbdump "${DB}" "${BACKUPDIR}/weekly/${DB}/${DB}_week.${W}.${DATE}.sql"
|
||||
[ $? -eq 0 ] && {
|
||||
${ECHO} Rotating 5 weeks Backups...
|
||||
${FIND} "${BACKUPDIR}/weekly/${DB}" -mtime +35 -type f -exec ${RM} -v {} \;
|
||||
}
|
||||
compression "${BACKUPDIR}/weekly/${DB}/${DB}_week.${W}.${DATE}.sql"
|
||||
BACKUPFILES="${BACKUPFILES} ${BACKUPDIR}/weekly/${DB}/${DB}_week.${W}.${DATE}.sql${SUFFIX}"
|
||||
${ECHO} ----------------------------------------------------------------------
|
||||
|
||||
# Daily Backup
|
||||
else
|
||||
${ECHO} Daily Backup of Database \( ${DB} \)
|
||||
${ECHO}
|
||||
dbdump "${DB}" "${BACKUPDIR}/daily/${DB}/${DB}_${DATE}.${DOW}.sql"
|
||||
[ $? -eq 0 ] && {
|
||||
${ECHO} Rotating last weeks Backup...
|
||||
${FIND} "${BACKUPDIR}/daily/${DB}" -mtime +6 -type f -exec ${RM} -v {} \;
|
||||
}
|
||||
compression "${BACKUPDIR}/daily/${DB}/${DB}_${DATE}.${DOW}.sql"
|
||||
BACKUPFILES="${BACKUPFILES} ${BACKUPDIR}/daily/${DB}/${DB}_${DATE}.${DOW}.sql${SUFFIX}"
|
||||
${ECHO} ----------------------------------------------------------------------
|
||||
fi
|
||||
done
|
||||
${ECHO} Backup End `${DATEC}`
|
||||
${ECHO} ======================================================================
|
||||
|
||||
|
||||
else # One backup file for all DBs
|
||||
${ECHO} Backup Start `${DATEC}`
|
||||
${ECHO} ======================================================================
|
||||
# Monthly Full Backup of all Databases
|
||||
if [ ${DOM} = "01" ]; then
|
||||
${ECHO} Monthly full Backup of \( ${MDBNAMES} \)...
|
||||
dbdump "${MDBNAMES}" "${BACKUPDIR}/monthly/${DATE}.${M}.all-databases.sql"
|
||||
[ $? -eq 0 ] && {
|
||||
${ECHO} "Rotating 5 month backups."
|
||||
${FIND} "${BACKUPDIR}/monthly" -mtime +150 -type f -exec ${RM} -v {} \;
|
||||
}
|
||||
compression "${BACKUPDIR}/monthly/${DATE}.${M}.all-databases.sql"
|
||||
BACKUPFILES="${BACKUPFILES} ${BACKUPDIR}/monthly/${DATE}.${M}.all-databases.sql${SUFFIX}"
|
||||
${ECHO} ----------------------------------------------------------------------
|
||||
fi
|
||||
|
||||
# Weekly Backup
|
||||
if [ ${DNOW} = ${DOWEEKLY} ]; then
|
||||
${ECHO} Weekly Backup of Databases \( ${DBNAMES} \)
|
||||
${ECHO}
|
||||
${ECHO}
|
||||
dbdump "${DBNAMES}" "${BACKUPDIR}/weekly/week.${W}.${DATE}.sql"
|
||||
[ $? -eq 0 ] && {
|
||||
${ECHO} Rotating 5 weeks Backups...
|
||||
${FIND} "${BACKUPDIR}/weekly/" -mtime +35 -type f -exec ${RM} -v {} \;
|
||||
}
|
||||
compression "${BACKUPDIR}/weekly/week.${W}.${DATE}.sql"
|
||||
BACKUPFILES="${BACKUPFILES} ${BACKUPDIR}/weekly/week.${W}.${DATE}.sql${SUFFIX}"
|
||||
${ECHO} ----------------------------------------------------------------------
|
||||
|
||||
# Daily Backup
|
||||
else
|
||||
${ECHO} Daily Backup of Databases \( ${DBNAMES} \)
|
||||
${ECHO}
|
||||
${ECHO}
|
||||
dbdump "${DBNAMES}" "${BACKUPDIR}/daily/${DATE}.${DOW}.sql"
|
||||
[ $? -eq 0 ] && {
|
||||
${ECHO} Rotating last weeks Backup...
|
||||
${FIND} "${BACKUPDIR}/daily" -mtime +6 -type f -exec ${RM} -v {} \;
|
||||
}
|
||||
compression "${BACKUPDIR}/daily/${DATE}.${DOW}.sql"
|
||||
BACKUPFILES="${BACKUPFILES} ${BACKUPDIR}/daily/${DATE}.${DOW}.sql${SUFFIX}"
|
||||
${ECHO} ----------------------------------------------------------------------
|
||||
fi
|
||||
${ECHO} Backup End Time `${DATEC}`
|
||||
${ECHO} ======================================================================
|
||||
fi
|
||||
${ECHO} Total disk space used for backup storage..
|
||||
${ECHO} Size - Location
|
||||
${ECHO} `${DU} -hs "${BACKUPDIR}"`
|
||||
${ECHO}
|
||||
${ECHO} ======================================================================
|
||||
${ECHO} If you find AutoMySQLBackup valuable please make a donation at
|
||||
${ECHO} http://sourceforge.net/project/project_donations.php?group_id=101066
|
||||
${ECHO} ======================================================================
|
||||
|
||||
# Run command when we're done
|
||||
if [ "${POSTBACKUP}" ]
|
||||
then
|
||||
${ECHO} ======================================================================
|
||||
${ECHO} "Postbackup command output."
|
||||
${ECHO}
|
||||
eval ${POSTBACKUP}
|
||||
${ECHO}
|
||||
${ECHO} ======================================================================
|
||||
fi
|
||||
|
||||
#Clean up IO redirection
|
||||
exec 1>&6 6>&- # Restore stdout and close file descriptor #6.
|
||||
exec 2>&7 7>&- # Restore stdout and close file descriptor #7.
|
||||
|
||||
if [ "${MAILCONTENT}" = "files" ]
|
||||
then
|
||||
if [ -s "${LOGERR}" ]
|
||||
then
|
||||
# Include error log if is larger than zero.
|
||||
BACKUPFILES="${BACKUPFILES} ${LOGERR}"
|
||||
ERRORNOTE="WARNING: Error Reported - "
|
||||
fi
|
||||
#Get backup size
|
||||
ATTSIZE=`${DU} -c ${BACKUPFILES} | ${GREP} "[[:digit:][:space:]]total$" |${SED} s/\s*total//`
|
||||
if [ ${MAXATTSIZE} -ge ${ATTSIZE} ]
|
||||
then
|
||||
BACKUPFILES=`${ECHO} "${BACKUPFILES}" | ${SED} -e "s# # -a #g"` #enable multiple attachments
|
||||
mutt -s "${ERRORNOTE} MySQL Backup Log and SQL Files for ${HOST} - ${DATE}" ${BACKUPFILES} ${MAILADDR} < ${LOGFILE} #send via mutt
|
||||
else
|
||||
${CAT} "${LOGFILE}" | mail -s "WARNING! - MySQL Backup exceeds set maximum attachment size on ${HOST} - ${DATE}" ${MAILADDR}
|
||||
fi
|
||||
elif [ "${MAILCONTENT}" = "log" ]
|
||||
then
|
||||
${CAT} "${LOGFILE}" | mail -s "MySQL Backup Log for ${HOST} - ${DATE}" ${MAILADDR}
|
||||
if [ -s "${LOGERR}" ]
|
||||
then
|
||||
${CAT} "${LOGERR}" | mail -s "ERRORS REPORTED: MySQL Backup error Log for ${HOST} - ${DATE}" ${MAILADDR}
|
||||
fi
|
||||
elif [ "${MAILCONTENT}" = "quiet" ]
|
||||
then
|
||||
if [ -s "${LOGERR}" ]
|
||||
then
|
||||
${CAT} "${LOGERR}" | mail -s "ERRORS REPORTED: MySQL Backup error Log for ${HOST} - ${DATE}" ${MAILADDR}
|
||||
${CAT} "${LOGFILE}" | mail -s "MySQL Backup Log for ${HOST} - ${DATE}" ${MAILADDR}
|
||||
fi
|
||||
else
|
||||
if [ -s "${LOGERR}" ]
|
||||
then
|
||||
${CAT} "${LOGFILE}"
|
||||
${ECHO}
|
||||
${ECHO} "###### WARNING ######"
|
||||
${ECHO} "Errors reported during AutoMySQLBackup execution.. Backup failed"
|
||||
${ECHO} "Error log below.."
|
||||
${CAT} "${LOGERR}"
|
||||
else
|
||||
${CAT} "${LOGFILE}"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -s "${LOGERR}" ]
|
||||
then
|
||||
STATUS=1
|
||||
else
|
||||
STATUS=0
|
||||
fi
|
||||
|
||||
# Clean up Logfile
|
||||
eval ${RM} -f "${LOGFILE}"
|
||||
eval ${RM} -f "${LOGERR}"
|
||||
|
||||
exit ${STATUS}
|
||||
21
bin/_old/old2/comsync
Executable file
21
bin/_old/old2/comsync
Executable file
|
|
@ -0,0 +1,21 @@
|
|||
#!/bin/bash
|
||||
|
||||
mkdir ~/tmp/.puting_de
|
||||
|
||||
cd ~/tmp/.puting_de
|
||||
|
||||
wget -m http://computing
|
||||
|
||||
#cd ~/tmp/.puting_de/hoyme/
|
||||
|
||||
#wget -m http://bolsena-ferienhaus
|
||||
|
||||
#mv bolsena-ferienhaus hoyme/neu
|
||||
|
||||
cp -R ~/www/com.puting.de/htdocs/hoyme ~/tmp/.puting_de/computing/hoyme
|
||||
|
||||
rsync --delete -r -v -z --perms --group ~/tmp/.puting_de/computing/ hanez.org:/var/www/puting.de/com/htdocs/
|
||||
|
||||
#rm -rf ~/tmp/.puting_de
|
||||
|
||||
#rsync --delete -r -v -z /home/www/hanez.org/ hanez.org:/var/www/hanez.org/www/ --exclude=*~ --exclude=wp-config.php --exclude=.svn --exclude=tmp.txt --exclude=cache/* --exclude=comments/* --perms --group --times
|
||||
125
bin/_old/old2/csr
Executable file
125
bin/_old/old2/csr
Executable file
|
|
@ -0,0 +1,125 @@
|
|||
#!/bin/sh
|
||||
# csr.sh: Certificate Signing Request Generator
|
||||
# Copyright(c) 2005 Evaldo Gardenali <evaldo@gardenali.biz>
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3. Neither the name of the author nor the names of its contributors may
|
||||
# be used to endorse or promote products derived from this software
|
||||
# without specific prior written permission.
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
# ChangeLog:
|
||||
# Mon May 23 00:14:37 BRT 2005 - evaldo - Initial Release
|
||||
|
||||
# be safe about permissions
|
||||
LASTUMASK=`umask`
|
||||
umask 077
|
||||
|
||||
# OpenSSL for HPUX needs a random file
|
||||
RANDOMFILE=$HOME/.rnd
|
||||
|
||||
# create a config file for openssl
|
||||
CONFIG=`mktemp -q /tmp/openssl-conf.XXXXXXXX`
|
||||
if [ ! $? -eq 0 ]; then
|
||||
echo "Could not create temporary config file. exiting"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Private Key and Certificate Signing Request Generator"
|
||||
echo "This script was designed to suit the request format needed by"
|
||||
echo "the CAcert Certificate Authority. www.CAcert.org"
|
||||
echo
|
||||
|
||||
printf "Short Hostname (ie. imap big_srv www2): "
|
||||
read HOST
|
||||
printf "FQDN/CommonName (ie. www.example.com) : "
|
||||
read COMMONNAME
|
||||
|
||||
echo "Type SubjectAltNames for the certificate, one per line. Enter a blank line to finish"
|
||||
SAN=1 # bogus value to begin the loop
|
||||
SANAMES="" # sanitize
|
||||
while [ ! "$SAN" = "" ]; do
|
||||
printf "SubjectAltName: DNS:"
|
||||
read SAN
|
||||
if [ "$SAN" = "" ]; then break; fi # end of input
|
||||
if [ "$SANAMES" = "" ]; then
|
||||
SANAMES="DNS:$SAN"
|
||||
else
|
||||
SANAMES="$SANAMES,DNS:$SAN"
|
||||
fi
|
||||
done
|
||||
|
||||
# Config File Generation
|
||||
|
||||
cat <<EOF > $CONFIG
|
||||
# -------------- BEGIN custom openssl.cnf -----
|
||||
HOME = $HOME
|
||||
EOF
|
||||
|
||||
if [ "`uname -s`" = "HP-UX" ]; then
|
||||
echo " RANDFILE = $RANDOMFILE" >> $CONFIG
|
||||
fi
|
||||
|
||||
cat <<EOF >> $CONFIG
|
||||
oid_section = new_oids
|
||||
[ new_oids ]
|
||||
[ req ]
|
||||
default_days = 730 # how long to certify for
|
||||
default_keyfile = $HOME/${HOST}_privatekey.pem
|
||||
distinguished_name = req_distinguished_name
|
||||
encrypt_key = no
|
||||
string_mask = nombstr
|
||||
EOF
|
||||
|
||||
if [ ! "$SANAMES" = "" ]; then
|
||||
echo "req_extensions = v3_req # Extensions to add to certificate request" >> $CONFIG
|
||||
fi
|
||||
|
||||
cat <<EOF >> $CONFIG
|
||||
[ req_distinguished_name ]
|
||||
commonName = Common Name (eg, YOUR name)
|
||||
commonName_default = $COMMONNAME
|
||||
commonName_max = 64
|
||||
[ v3_req ]
|
||||
EOF
|
||||
|
||||
if [ ! "$SANAMES" = "" ]; then
|
||||
echo "subjectAltName=$SANAMES" >> $CONFIG
|
||||
fi
|
||||
|
||||
echo "# -------------- END custom openssl.cnf -----" >> $CONFIG
|
||||
|
||||
echo "Running OpenSSL..."
|
||||
openssl req -batch -config $CONFIG -newkey rsa:2048 -out $HOME/${HOST}_csr.pem
|
||||
echo "Copy the following Certificate Request and paste into CAcert website to obtain a Certificate."
|
||||
echo "When you receive your certificate, you 'should' name it something like ${HOST}_server.pem"
|
||||
echo
|
||||
cat $HOME/${HOST}_csr.pem
|
||||
echo
|
||||
echo The Certificate request is also available in $HOME/${HOST}_csr.pem
|
||||
echo The Private Key is stored in $HOME/${HOST}_privatekey.pem
|
||||
echo
|
||||
|
||||
rm $CONFIG
|
||||
|
||||
#restore umask
|
||||
umask $LASTUMASK
|
||||
|
||||
40
bin/_old/old2/discinfo
Executable file
40
bin/_old/old2/discinfo
Executable file
|
|
@ -0,0 +1,40 @@
|
|||
#!/bin/bash
|
||||
#----------------------------------------------------------------------
|
||||
# Author: haveaniceday
|
||||
# Version: 1, Last updated: 12/2007
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
# fdisk finden
|
||||
PATH="/sbin:$PATH"
|
||||
if [ $# -lt 1 ]
|
||||
then
|
||||
echo "usage: ${0##*/} <image>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
IMAGE=$1
|
||||
if [ ! -f $IMAGE ]
|
||||
then
|
||||
echo "Warnung, $IMAGE ist kein File"
|
||||
fi
|
||||
|
||||
# tr -d '*' => bootflag entfernen
|
||||
LANG=C fdisk -lu $IMAGE 2>&1 | tr -d '*' | grep "$IMAGE[a-z0-9]" | while read part start end blocks id rest
|
||||
do
|
||||
echo
|
||||
echo "$read $part $start $end $blocks $id $rest"
|
||||
case $id in
|
||||
5|f|85) echo "Ignoriere extended partition"
|
||||
continue
|
||||
;;
|
||||
82) echo "Ignoriere Swap"
|
||||
continue
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
let offset=$start*512
|
||||
echo mount -o loop,ro,offset=$offset $IMAGE /mnt
|
||||
done
|
||||
exit 0
|
||||
4
bin/_old/old2/fanspeed
Executable file
4
bin/_old/old2/fanspeed
Executable file
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/bash
|
||||
|
||||
cat "/proc/acpi/ibm/fan" | grep "speed" | cut -f3
|
||||
|
||||
3
bin/_old/old2/foo
Executable file
3
bin/_old/old2/foo
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/sh
|
||||
|
||||
echo "$@"
|
||||
371
bin/_old/old2/git-cal
Executable file
371
bin/_old/old2/git-cal
Executable file
|
|
@ -0,0 +1,371 @@
|
|||
#!/usr/bin/perl
|
||||
use strict;
|
||||
|
||||
use utf8;
|
||||
use Getopt::Long;
|
||||
use Pod::Usage;
|
||||
use Data::Dumper;
|
||||
|
||||
binmode(STDOUT, ":utf8");
|
||||
#command line options
|
||||
my ( $help, $period, $author, $filepath );
|
||||
|
||||
GetOptions(
|
||||
'help|?' => \$help,
|
||||
'period|p=n' => \$period,
|
||||
'author=s' => \$author,
|
||||
) or pod2usage(2);
|
||||
pod2usage(1) if $help;
|
||||
|
||||
$filepath = shift @ARGV;
|
||||
|
||||
# also tried to use unicode chars instead of colors, the exp did not go well
|
||||
#qw(⬚ ⬜ ▤ ▣ ⬛)
|
||||
#qw(⬚ ▢ ▤ ▣ ⬛)
|
||||
|
||||
my @colors = ( 237, 157, 155, 47, 2 );
|
||||
my @months = qw (Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
|
||||
|
||||
process();
|
||||
|
||||
# 53 X 7 grid
|
||||
# consists of 0 - 370 blocks
|
||||
my ( @grid, @timeline, %pos_month, %month_pos, $jan1, $cur_year, $max_epoch, $min_epoch, $max_commits, $q1, $q2, $q3 );
|
||||
my ( $first_block, $last_block, $start_block, $end_block, $row_start, $row_end );
|
||||
my ( $total_commits, $max_streak, $cur_streak, $max_streak_weekdays, $cur_streak_weekdays );
|
||||
my ( $cur_start, $max_start, $max_end, $cur_weekdays_start, $max_weekdays_start, $max_weekdays_end );
|
||||
#loads of global variables
|
||||
|
||||
sub process {
|
||||
#try to exit gracefully when the terminal doesn't support enough colors
|
||||
no warnings; #dont warn if tput command fails
|
||||
my $colors_supported = qx/tput colors/;
|
||||
if ($colors_supported && $colors_supported < 256) {
|
||||
chomp $colors_supported;
|
||||
print "fatal: 'tput colors' returned < 256 (" . $colors_supported . ") , cannot plot the calendar as the terminal doesn't support enough colors\n"; #will try to hack around this soon
|
||||
exit(1);
|
||||
}
|
||||
init_cal_stuff();
|
||||
my $extra_args = "";
|
||||
$extra_args = " --author=" . $author if $author;
|
||||
if ($filepath) {
|
||||
if ( -e $filepath ) {
|
||||
$extra_args .= " -- " . $filepath;
|
||||
}
|
||||
else {
|
||||
print "fatal: $filepath do not exists\n";
|
||||
exit(2);
|
||||
}
|
||||
}
|
||||
my $git_command = "git log --pretty=format:\"%at\" --since=\"13 months\"" . $extra_args; #commits might not be in strict time order, check some past too
|
||||
my $epochs = qx/$git_command/;
|
||||
if ($?) {
|
||||
print "fatal: git-cal failed to get the git log\n";
|
||||
exit(2);
|
||||
}
|
||||
my @epochs = split /\n/, $epochs;
|
||||
if (! @epochs) {
|
||||
print "git-cal: got empty log, nothing to do\n";
|
||||
exit(1);
|
||||
}
|
||||
my $status;
|
||||
foreach (@epochs) {
|
||||
$status = add_epoch($_);
|
||||
last if !$status;
|
||||
}
|
||||
compute_stats();
|
||||
print_grid();
|
||||
}
|
||||
|
||||
|
||||
sub init_cal_stuff {
|
||||
my ( $wday, $yday, $month, $year ) = ( localtime(time) )[ 6, 7, 4, 5 ];
|
||||
$cur_year = $year;
|
||||
$jan1 = 370 - ( $yday + 6 - $wday );
|
||||
$last_block = $jan1 + $yday + 1;
|
||||
$first_block = $last_block - 365;
|
||||
$max_commits = 0;
|
||||
push @timeline, $jan1;
|
||||
$month_pos{0} = $jan1;
|
||||
my $cur = $jan1;
|
||||
|
||||
foreach ( 0 .. $month - 1 ) {
|
||||
$cur += number_of_days( $_, $year );
|
||||
push @timeline, $cur;
|
||||
$month_pos{ $_ + 1 } = $cur;
|
||||
}
|
||||
$cur = $jan1;
|
||||
for ( my $m = 11; $m > $month; $m-- ) {
|
||||
$cur -= number_of_days( $m, $year - 1 );
|
||||
unshift @timeline, $cur;
|
||||
$month_pos{$m} = $cur;
|
||||
}
|
||||
|
||||
$pos_month{ $month_pos{$_} } = $months[$_] foreach keys %month_pos;
|
||||
|
||||
die "period can only be between -11 to -1 and 1 to 12" if ( defined $period && ( $period < -11 || $period > 12 || $period == 0 ) );
|
||||
$period = 0 if !defined $period;
|
||||
if ( $period == 0 ) {
|
||||
$start_block = $first_block;
|
||||
$end_block = $last_block;
|
||||
}
|
||||
elsif ( $period > 0 ) {
|
||||
$start_block = $month_pos{ $period - 1 };
|
||||
$end_block = $month_pos{ $period % 12 };
|
||||
$end_block = $last_block if $start_block > $end_block;
|
||||
}
|
||||
else {
|
||||
$start_block = $timeline[ 11 + $period ];
|
||||
$start_block = $first_block if $period == -12;
|
||||
$end_block = $last_block;
|
||||
}
|
||||
$row_start = int $start_block / 7;
|
||||
$row_end = int $end_block / 7;
|
||||
$max_epoch = time - 86400 * ( $last_block - $end_block );
|
||||
$min_epoch = time - 86400 * ( $last_block - $start_block );
|
||||
|
||||
( $total_commits, $max_streak, $cur_streak, $max_streak_weekdays, $cur_streak_weekdays ) = (0) x 5;
|
||||
( $cur_start, $max_start, $max_end, $cur_weekdays_start, $max_weekdays_start, $max_weekdays_end ) = (0) x 6;
|
||||
|
||||
}
|
||||
|
||||
|
||||
sub add_epoch {
|
||||
my $epoch = shift;
|
||||
if ( $epoch > $max_epoch || $epoch < $min_epoch ) {
|
||||
return 1;
|
||||
}
|
||||
my ( $month, $year, $wday, $yday ) = ( localtime($epoch) )[ 4, 5, 6, 7 ];
|
||||
my $pos;
|
||||
if ( $year == $cur_year ) {
|
||||
$pos = ( $jan1 + $yday );
|
||||
}
|
||||
else {
|
||||
my $total = ( $year % 4 ) ? 365 : 366;
|
||||
$pos = ( $jan1 - ( $total - $yday ) );
|
||||
}
|
||||
return 0 if $pos < 0; #just in case
|
||||
add_to_grid( $pos, $epoch );
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub add_to_grid {
|
||||
my ( $pos, $epoch ) = @_;
|
||||
my $r = int $pos / 7;
|
||||
my $c = $pos % 7;
|
||||
$grid[$r][$c]->{commits}++;
|
||||
$grid[$r][$c]->{epoch} = $epoch;
|
||||
$max_commits = $grid[$r][$c]->{commits} if $grid[$r][$c]->{commits} > $max_commits;
|
||||
}
|
||||
|
||||
|
||||
sub compute_stats {
|
||||
my %commit_counts;
|
||||
foreach my $r ( $row_start .. $row_end ) {
|
||||
foreach my $c ( 0 .. 6 ) {
|
||||
my $cur_block = ( $r * 7 ) + $c;
|
||||
if ( $cur_block >= $start_block && $cur_block < $end_block ) {
|
||||
my $count = $grid[$r][$c]->{commits} || 0;
|
||||
$total_commits += $count;
|
||||
if ($count) {
|
||||
$commit_counts{$count} = 1;
|
||||
$cur_streak++;
|
||||
$cur_start = $grid[$r][$c]->{epoch} if $cur_start == 0;
|
||||
if ( $cur_streak > $max_streak ) {
|
||||
$max_streak = $cur_streak;
|
||||
$max_start = $cur_start;
|
||||
$max_end = $grid[$r][$c]->{epoch};
|
||||
}
|
||||
|
||||
#count++ if you work on weekends and streak will not be broken otherwise :)
|
||||
$cur_streak_weekdays++;
|
||||
$cur_weekdays_start = $grid[$r][$c]->{epoch} if $cur_weekdays_start == 0;
|
||||
if ( $cur_streak_weekdays > $max_streak_weekdays ) {
|
||||
$max_streak_weekdays = $cur_streak_weekdays;
|
||||
$max_weekdays_start = $cur_weekdays_start;
|
||||
$max_weekdays_end = $grid[$r][$c]->{epoch};
|
||||
}
|
||||
}
|
||||
else {
|
||||
$cur_streak = 0;
|
||||
$cur_start = 0;
|
||||
if ( $c > 0 && $c < 6 ) {
|
||||
$cur_streak_weekdays = 0;
|
||||
$cur_weekdays_start = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#now compute quartiles
|
||||
my @commit_counts = sort { $a <=> $b } ( keys %commit_counts );
|
||||
$q1 = $commit_counts[ int( scalar @commit_counts ) / 4 ];
|
||||
$q2 = $commit_counts[ int( scalar @commit_counts ) / 2 ];
|
||||
$q3 = $commit_counts[ int( 3 * ( scalar @commit_counts ) / 4 ) ];
|
||||
|
||||
#print "commit counts: " . (scalar @commit_counts) . " - " . (join ",",@commit_counts) . "\n\n";
|
||||
#print "quartiles: $q1 $q2 $q3\n";
|
||||
}
|
||||
|
||||
sub print_grid {
|
||||
my $space = 6;
|
||||
print_month_names($space);
|
||||
foreach my $c ( 0 .. 6 ) {
|
||||
printf "\n%" . ( $space - 2 ) . "s", "";
|
||||
if ( $c == 1 ) {
|
||||
print "M ";
|
||||
}
|
||||
elsif ( $c == 3 ) {
|
||||
print "W ";
|
||||
}
|
||||
elsif ( $c == 5 ) {
|
||||
print "F ";
|
||||
}
|
||||
else {
|
||||
print " ";
|
||||
}
|
||||
foreach my $r ( $row_start .. $row_end ) {
|
||||
my $cur_block = ( $r * 7 ) + $c;
|
||||
if ( $cur_block >= $start_block && $cur_block < $end_block ) {
|
||||
my $val = $grid[$r][$c]->{commits} || 0;
|
||||
my $index = 0;
|
||||
|
||||
#$index = ( int( ( $val - 4 ) / $divide ) ) + 1 if $val > 0; #too dumb and bad
|
||||
if ($val) {
|
||||
if ( $val <= $q1 ) {
|
||||
$index = 1;
|
||||
}
|
||||
elsif ( $val <= $q2 ) {
|
||||
$index = 2;
|
||||
}
|
||||
elsif ( $val <= $q3 ) {
|
||||
$index = 3;
|
||||
}
|
||||
else {
|
||||
$index = 4;
|
||||
}
|
||||
}
|
||||
print_block($index);
|
||||
}
|
||||
else {
|
||||
print " ";
|
||||
}
|
||||
}
|
||||
}
|
||||
print "\n\n";
|
||||
printf "%" . ( 2 * ( $row_end - $row_start ) + $space - 10 ) . "s", "Less "; #such that the right borders align
|
||||
print_block($_) foreach ( 0 .. 4 );
|
||||
print " More\n";
|
||||
|
||||
printf "%4d: Total commits\n", $total_commits;
|
||||
print_message( $max_streak_weekdays, $max_weekdays_start, $max_weekdays_end, "Longest streak excluding weekends" );
|
||||
print_message( $max_streak, $max_start, $max_end, "Longest streak including weekends" );
|
||||
print_message( $cur_streak_weekdays, $cur_weekdays_start, time, "Current streak" );
|
||||
}
|
||||
|
||||
|
||||
sub print_block {
|
||||
my $index = shift;
|
||||
$index = 4 if $index > 4;
|
||||
my $c = $colors[$index];
|
||||
#always show on a black background, else it looks different (sometimes really bad ) with different settings.
|
||||
#print "\e[40;38;5;${c}m⬛ \e[0m";
|
||||
print "\e[40;38;5;${c}m\x{25fc} \e[0m";
|
||||
}
|
||||
|
||||
sub print_month_names {
|
||||
#print month labels, printing current month in the right position is tricky
|
||||
my $space = shift;
|
||||
if ( defined $period && $period > 0 ) {
|
||||
printf "%" . $space . "s %3s", "", $months[ $period - 1 ];
|
||||
return;
|
||||
}
|
||||
my $label_printer = 0;
|
||||
my $timeline_iter = 11 + ( $period || -11 );
|
||||
if ( $start_block == $first_block && $timeline[0] != 0 ) {
|
||||
my $first_pos = int $timeline[0] / 7;
|
||||
if ( $first_pos == 0 ) {
|
||||
printf "%" . ( $space - 2 ) . "s", "";
|
||||
print $pos_month{ $timeline[-1] } . " ";
|
||||
print $pos_month{ $timeline[0] } . " ";
|
||||
$timeline_iter++;
|
||||
}
|
||||
elsif ( $first_pos == 1 ) {
|
||||
printf "%" . ( $space - 2 ) . "s", "";
|
||||
print $pos_month{ $timeline[-1] } . " ";
|
||||
}
|
||||
else {
|
||||
printf "%" . $space . "s", "";
|
||||
printf "%-" . ( 2 * $first_pos ) . "s", $pos_month{ $timeline[-1] };
|
||||
}
|
||||
$label_printer = $first_pos;
|
||||
}
|
||||
else {
|
||||
printf "%" . $space . "s", "";
|
||||
$label_printer += ( int $start_block / 7 );
|
||||
}
|
||||
|
||||
while ( $label_printer < $end_block / 7 && $timeline_iter <= $#timeline ) {
|
||||
while ( ( int $timeline[$timeline_iter] / 7 ) != $label_printer ) { print " "; $label_printer++; }
|
||||
print " " . $pos_month{ $timeline[$timeline_iter] } . " ";
|
||||
$label_printer += 3;
|
||||
$timeline_iter++;
|
||||
}
|
||||
}
|
||||
|
||||
sub print_message {
|
||||
my ( $days, $start_epoch, $end_epoch, $message ) = @_;
|
||||
if ($days) {
|
||||
my @range;
|
||||
foreach my $epoch ( $start_epoch, $end_epoch ) {
|
||||
my ( $mday, $mon, $year ) = ( localtime($epoch) )[ 3, 4, 5 ];
|
||||
my $s = sprintf( "%3s %2d %4d", $months[$mon], $mday, ( 1900 + $year ) );
|
||||
push @range, $s;
|
||||
}
|
||||
printf "%4d: Days ( %-25s ) - %-40s\n", $days, ( join " - ", @range ), $message;
|
||||
}
|
||||
else {
|
||||
printf "%4d: Days - %-40s\n", $days, $message;
|
||||
}
|
||||
}
|
||||
|
||||
sub number_of_days {
|
||||
my ( $month, $year ) = @_;
|
||||
return 30 if $month == 3 || $month == 5 || $month == 8 || $month == 10;
|
||||
return 31 if $month != 1;
|
||||
return 28 if $year % 4;
|
||||
return 29;
|
||||
}
|
||||
|
||||
__END__
|
||||
|
||||
=head1 NAME
|
||||
|
||||
git-cal - A simple tool to view commits calendar (similar to github contributions calendar) on command line
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
"git-cal" is a tool to visualize the git commit history in github's contribution calendar style.
|
||||
The calendar shows how frequently the commits are made over the past year or some choosen period
|
||||
|
||||
git-cal
|
||||
git-cal --author=<author> -- <filepath>
|
||||
|
||||
=head2 OPTIONS
|
||||
|
||||
--author view commits of a particular author (passed to git log --author= )
|
||||
--period|p Do not show the entire year, p=1 to 12 shows only one month (1 = Jan .. 12 = Dec), p=-1 to -11 shows last p months and the current month
|
||||
--help|? help me
|
||||
|
||||
=head2 ADDITIONAL OPTIONS
|
||||
|
||||
-- filename to view the logs of a particular file or directory
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Karthik katooru <karthikkatooru@gmail.com>
|
||||
|
||||
=head1 COPYRIGHT AND LICENSE
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under the MIT License
|
||||
14
bin/_old/old2/homeback
Executable file
14
bin/_old/old2/homeback
Executable file
|
|
@ -0,0 +1,14 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Backup MySQL Databases
|
||||
#/home/hanez/bin/automysqlbackup-2.5.1-01.sh
|
||||
|
||||
# Backup HOME
|
||||
rsync -av --delete --delete-excluded --exclude=hanez/movies/.shared \
|
||||
/home/* /media/BACKUP_600GB/HOME/
|
||||
|
||||
# Backup /
|
||||
rsync -av --delete \
|
||||
--exclude=/dev --exclude=/tmp --exclude=/home --exclude=/sys \
|
||||
--exclude=/var/log/wtmp --exclude=/media --exclude=/mnt --exclude=/proc \
|
||||
/* /media/BACKUP_600GB/ROOT/
|
||||
22
bin/_old/old2/linsync
Executable file
22
bin/_old/old2/linsync
Executable file
|
|
@ -0,0 +1,22 @@
|
|||
#!/bin/bash
|
||||
|
||||
mkdir ~/tmp/.linspector_org
|
||||
|
||||
cd ~/tmp/.linspector_org
|
||||
|
||||
#rsync -avr hanez.org:/var/www/linspector.org/www/htdocs/wiki/conf/* ~/www/linspector.org/htdocs/wiki/conf/
|
||||
#rsync -avr hanez.org:/var/www/linspector.org/www/htdocs/wiki/data/* ~/www/linspector.org/htdocs/wiki/data/
|
||||
|
||||
wget -m http://linspector
|
||||
|
||||
#rm -rf ~/tmp/.linspector_org/linspector/wiki/*
|
||||
|
||||
rsync --delete -avr ~/dev/linspector/docs/* ~/tmp/.linspector_org/linspector/docs/api/
|
||||
|
||||
#rsync -avr --exclude=data/ ~/www/linspector.org/htdocs/wiki/* ~/tmp/.linspector_org/linspector/wiki/
|
||||
|
||||
rsync --delete -r -v -z --perms --group --exclude=wiki/data/ ~/tmp/.linspector_org/linspector/ hanez.org:/var/www/linspector.org/www/htdocs/
|
||||
|
||||
rm -rf ~/tmp/.linspector_org
|
||||
|
||||
#rsync --delete -r -v -z /home/www/hanez.org/ hanez.org:/var/www/hanez.org/www/ --exclude=*~ --exclude=wp-config.php --exclude=.svn --exclude=tmp.txt --exclude=cache/* --exclude=comments/* --perms --group --times
|
||||
BIN
bin/_old/old2/lm4flash
Executable file
BIN
bin/_old/old2/lm4flash
Executable file
Binary file not shown.
3
bin/_old/old2/lsmodparms
Executable file
3
bin/_old/old2/lsmodparms
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
|
||||
cat /proc/modules | cut -f 1 -d " " | while read module; do echo "Module: $module"; if [ -d "/sys/module/$module/parameters" ]; then ls /sys/module/$module/parameters/ | while read parameter; do echo -n "Parameter: $parameter --> "; cat /sys/module/$module/parameters/$parameter; done; fi; echo; done
|
||||
5
bin/_old/old2/ping.sh
Executable file
5
bin/_old/old2/ping.sh
Executable file
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
for i in `seq 1 255`; do
|
||||
ping -c 1 192.168.55.$i;
|
||||
done
|
||||
596
bin/_old/old2/repo
Executable file
596
bin/_old/old2/repo
Executable file
|
|
@ -0,0 +1,596 @@
|
|||
#!/bin/sh
|
||||
|
||||
## repo default configuration
|
||||
##
|
||||
REPO_URL='git://android.git.kernel.org/tools/repo.git'
|
||||
REPO_REV='stable'
|
||||
|
||||
# Copyright (C) 2008 Google Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
magic='--calling-python-from-/bin/sh--'
|
||||
"""exec" python -E "$0" "$@" """#$magic"
|
||||
if __name__ == '__main__':
|
||||
import sys
|
||||
if sys.argv[-1] == '#%s' % magic:
|
||||
del sys.argv[-1]
|
||||
del magic
|
||||
|
||||
# increment this whenever we make important changes to this script
|
||||
VERSION = (1, 9)
|
||||
|
||||
# increment this if the MAINTAINER_KEYS block is modified
|
||||
KEYRING_VERSION = (1,0)
|
||||
MAINTAINER_KEYS = """
|
||||
|
||||
Repo Maintainer <repo@android.kernel.org>
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v1.4.2.2 (GNU/Linux)
|
||||
|
||||
mQGiBEj3ugERBACrLJh/ZPyVSKeClMuznFIrsQ+hpNnmJGw1a9GXKYKk8qHPhAZf
|
||||
WKtrBqAVMNRLhL85oSlekRz98u41H5si5zcuv+IXJDF5MJYcB8f22wAy15lUqPWi
|
||||
VCkk1l8qqLiuW0fo+ZkPY5qOgrvc0HW1SmdH649uNwqCbcKb6CxaTxzhOwCgj3AP
|
||||
xI1WfzLqdJjsm1Nq98L0cLcD/iNsILCuw44PRds3J75YP0pze7YF/6WFMB6QSFGu
|
||||
aUX1FsTTztKNXGms8i5b2l1B8JaLRWq/jOnZzyl1zrUJhkc0JgyZW5oNLGyWGhKD
|
||||
Fxp5YpHuIuMImopWEMFIRQNrvlg+YVK8t3FpdI1RY0LYqha8pPzANhEYgSfoVzOb
|
||||
fbfbA/4ioOrxy8ifSoga7ITyZMA+XbW8bx33WXutO9N7SPKS/AK2JpasSEVLZcON
|
||||
ae5hvAEGVXKxVPDjJBmIc2cOe7kOKSi3OxLzBqrjS2rnjiP4o0ekhZIe4+ocwVOg
|
||||
e0PLlH5avCqihGRhpoqDRsmpzSHzJIxtoeb+GgGEX8KkUsVAhbQpUmVwbyBNYWlu
|
||||
dGFpbmVyIDxyZXBvQGFuZHJvaWQua2VybmVsLm9yZz6IYAQTEQIAIAUCSPe6AQIb
|
||||
AwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEBZTDV6SD1xl1GEAn0x/OKQpy7qI
|
||||
6G73NJviU0IUMtftAKCFMUhGb/0bZvQ8Rm3QCUpWHyEIu7kEDQRI97ogEBAA2wI6
|
||||
5fs9y/rMwD6dkD/vK9v4C9mOn1IL5JCPYMJBVSci+9ED4ChzYvfq7wOcj9qIvaE0
|
||||
GwCt2ar7Q56me5J+byhSb32Rqsw/r3Vo5cZMH80N4cjesGuSXOGyEWTe4HYoxnHv
|
||||
gF4EKI2LK7xfTUcxMtlyn52sUpkfKsCpUhFvdmbAiJE+jCkQZr1Z8u2KphV79Ou+
|
||||
P1N5IXY/XWOlq48Qf4MWCYlJFrB07xjUjLKMPDNDnm58L5byDrP/eHysKexpbakL
|
||||
xCmYyfT6DV1SWLblpd2hie0sL3YejdtuBMYMS2rI7Yxb8kGuqkz+9l1qhwJtei94
|
||||
5MaretDy/d/JH/pRYkRf7L+ke7dpzrP+aJmcz9P1e6gq4NJsWejaALVASBiioqNf
|
||||
QmtqSVzF1wkR5avZkFHuYvj6V/t1RrOZTXxkSk18KFMJRBZrdHFCWbc5qrVxUB6e
|
||||
N5pja0NFIUCigLBV1c6I2DwiuboMNh18VtJJh+nwWeez/RueN4ig59gRTtkcc0PR
|
||||
35tX2DR8+xCCFVW/NcJ4PSePYzCuuLvp1vEDHnj41R52Fz51hgddT4rBsp0nL+5I
|
||||
socSOIIezw8T9vVzMY4ArCKFAVu2IVyBcahTfBS8q5EM63mONU6UVJEozfGljiMw
|
||||
xuQ7JwKcw0AUEKTKG7aBgBaTAgT8TOevpvlw91cAAwUP/jRkyVi/0WAb0qlEaq/S
|
||||
ouWxX1faR+vU3b+Y2/DGjtXQMzG0qpetaTHC/AxxHpgt/dCkWI6ljYDnxgPLwG0a
|
||||
Oasm94BjZc6vZwf1opFZUKsjOAAxRxNZyjUJKe4UZVuMTk6zo27Nt3LMnc0FO47v
|
||||
FcOjRyquvgNOS818irVHUf12waDx8gszKxQTTtFxU5/ePB2jZmhP6oXSe4K/LG5T
|
||||
+WBRPDrHiGPhCzJRzm9BP0lTnGCAj3o9W90STZa65RK7IaYpC8TB35JTBEbrrNCp
|
||||
w6lzd74LnNEp5eMlKDnXzUAgAH0yzCQeMl7t33QCdYx2hRs2wtTQSjGfAiNmj/WW
|
||||
Vl5Jn+2jCDnRLenKHwVRFsBX2e0BiRWt/i9Y8fjorLCXVj4z+7yW6DawdLkJorEo
|
||||
p3v5ILwfC7hVx4jHSnOgZ65L9s8EQdVr1ckN9243yta7rNgwfcqb60ILMFF1BRk/
|
||||
0V7wCL+68UwwiQDvyMOQuqkysKLSDCLb7BFcyA7j6KG+5hpsREstFX2wK1yKeraz
|
||||
5xGrFy8tfAaeBMIQ17gvFSp/suc9DYO0ICK2BISzq+F+ZiAKsjMYOBNdH/h0zobQ
|
||||
HTHs37+/QLMomGEGKZMWi0dShU2J5mNRQu3Hhxl3hHDVbt5CeJBb26aQcQrFz69W
|
||||
zE3GNvmJosh6leayjtI9P2A6iEkEGBECAAkFAkj3uiACGwwACgkQFlMNXpIPXGWp
|
||||
TACbBS+Up3RpfYVfd63c1cDdlru13pQAn3NQy/SN858MkxN+zym86UBgOad2
|
||||
=CMiZ
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
"""
|
||||
|
||||
GIT = 'git' # our git command
|
||||
MIN_GIT_VERSION = (1, 5, 4) # minimum supported git version
|
||||
repodir = '.repo' # name of repo's private directory
|
||||
S_repo = 'repo' # special repo reposiory
|
||||
S_manifests = 'manifests' # special manifest repository
|
||||
REPO_MAIN = S_repo + '/main.py' # main script
|
||||
|
||||
|
||||
import optparse
|
||||
import os
|
||||
import re
|
||||
import readline
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
home_dot_repo = os.path.expanduser('~/.repoconfig')
|
||||
gpg_dir = os.path.join(home_dot_repo, 'gnupg')
|
||||
|
||||
extra_args = []
|
||||
init_optparse = optparse.OptionParser(usage="repo init -u url [options]")
|
||||
|
||||
# Logging
|
||||
group = init_optparse.add_option_group('Logging options')
|
||||
group.add_option('-q', '--quiet',
|
||||
dest="quiet", action="store_true", default=False,
|
||||
help="be quiet")
|
||||
|
||||
# Manifest
|
||||
group = init_optparse.add_option_group('Manifest options')
|
||||
group.add_option('-u', '--manifest-url',
|
||||
dest='manifest_url',
|
||||
help='manifest repository location', metavar='URL')
|
||||
group.add_option('-o', '--origin',
|
||||
dest='manifest_origin',
|
||||
help="use REMOTE instead of 'origin' to track upstream",
|
||||
metavar='REMOTE')
|
||||
group.add_option('-b', '--manifest-branch',
|
||||
dest='manifest_branch',
|
||||
help='manifest branch or revision', metavar='REVISION')
|
||||
group.add_option('-m', '--manifest-name',
|
||||
dest='manifest_name',
|
||||
help='initial manifest file (deprecated)',
|
||||
metavar='NAME.xml')
|
||||
group.add_option('--mirror',
|
||||
dest='mirror', action='store_true',
|
||||
help='mirror the forrest')
|
||||
|
||||
# Tool
|
||||
group = init_optparse.add_option_group('repo Version options')
|
||||
group.add_option('--repo-url',
|
||||
dest='repo_url',
|
||||
help='repo repository location', metavar='URL')
|
||||
group.add_option('--repo-branch',
|
||||
dest='repo_branch',
|
||||
help='repo branch or revision', metavar='REVISION')
|
||||
group.add_option('--no-repo-verify',
|
||||
dest='no_repo_verify', action='store_true',
|
||||
help='do not verify repo source code')
|
||||
|
||||
|
||||
class CloneFailure(Exception):
|
||||
"""Indicate the remote clone of repo itself failed.
|
||||
"""
|
||||
|
||||
|
||||
def _Init(args):
|
||||
"""Installs repo by cloning it over the network.
|
||||
"""
|
||||
opt, args = init_optparse.parse_args(args)
|
||||
if args or not opt.manifest_url:
|
||||
init_optparse.print_usage()
|
||||
sys.exit(1)
|
||||
|
||||
url = opt.repo_url
|
||||
if not url:
|
||||
url = REPO_URL
|
||||
extra_args.append('--repo-url=%s' % url)
|
||||
|
||||
branch = opt.repo_branch
|
||||
if not branch:
|
||||
branch = REPO_REV
|
||||
extra_args.append('--repo-branch=%s' % branch)
|
||||
|
||||
if branch.startswith('refs/heads/'):
|
||||
branch = branch[len('refs/heads/'):]
|
||||
if branch.startswith('refs/'):
|
||||
print >>sys.stderr, "fatal: invalid branch name '%s'" % branch
|
||||
raise CloneFailure()
|
||||
|
||||
if not os.path.isdir(repodir):
|
||||
try:
|
||||
os.mkdir(repodir)
|
||||
except OSError, e:
|
||||
print >>sys.stderr, \
|
||||
'fatal: cannot make %s directory: %s' % (
|
||||
repodir, e.strerror)
|
||||
# Don't faise CloneFailure; that would delete the
|
||||
# name. Instead exit immediately.
|
||||
#
|
||||
sys.exit(1)
|
||||
|
||||
_CheckGitVersion()
|
||||
try:
|
||||
if _NeedSetupGnuPG():
|
||||
can_verify = _SetupGnuPG(opt.quiet)
|
||||
else:
|
||||
can_verify = True
|
||||
|
||||
if not opt.quiet:
|
||||
print >>sys.stderr, 'Getting repo ...'
|
||||
print >>sys.stderr, ' from %s' % url
|
||||
|
||||
dst = os.path.abspath(os.path.join(repodir, S_repo))
|
||||
_Clone(url, dst, opt.quiet)
|
||||
|
||||
if can_verify and not opt.no_repo_verify:
|
||||
rev = _Verify(dst, branch, opt.quiet)
|
||||
else:
|
||||
rev = 'refs/remotes/origin/%s^0' % branch
|
||||
|
||||
_Checkout(dst, branch, rev, opt.quiet)
|
||||
except CloneFailure:
|
||||
if opt.quiet:
|
||||
print >>sys.stderr, \
|
||||
'fatal: repo init failed; run without --quiet to see why'
|
||||
raise
|
||||
|
||||
|
||||
def _CheckGitVersion():
|
||||
cmd = [GIT, '--version']
|
||||
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
|
||||
ver_str = proc.stdout.read().strip()
|
||||
proc.stdout.close()
|
||||
proc.wait()
|
||||
|
||||
if not ver_str.startswith('git version '):
|
||||
print >>sys.stderr, 'error: "%s" unsupported' % ver_str
|
||||
raise CloneFailure()
|
||||
|
||||
ver_str = ver_str[len('git version '):].strip()
|
||||
ver_act = tuple(map(lambda x: int(x), ver_str.split('.')[0:3]))
|
||||
if ver_act < MIN_GIT_VERSION:
|
||||
need = '.'.join(map(lambda x: str(x), MIN_GIT_VERSION))
|
||||
print >>sys.stderr, 'fatal: git %s or later required' % need
|
||||
raise CloneFailure()
|
||||
|
||||
|
||||
def _NeedSetupGnuPG():
|
||||
if not os.path.isdir(home_dot_repo):
|
||||
return True
|
||||
|
||||
kv = os.path.join(home_dot_repo, 'keyring-version')
|
||||
if not os.path.exists(kv):
|
||||
return True
|
||||
|
||||
kv = open(kv).read()
|
||||
if not kv:
|
||||
return True
|
||||
|
||||
kv = tuple(map(lambda x: int(x), kv.split('.')))
|
||||
if kv < KEYRING_VERSION:
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def _SetupGnuPG(quiet):
|
||||
if not os.path.isdir(home_dot_repo):
|
||||
try:
|
||||
os.mkdir(home_dot_repo)
|
||||
except OSError, e:
|
||||
print >>sys.stderr, \
|
||||
'fatal: cannot make %s directory: %s' % (
|
||||
home_dot_repo, e.strerror)
|
||||
sys.exit(1)
|
||||
|
||||
if not os.path.isdir(gpg_dir):
|
||||
try:
|
||||
os.mkdir(gpg_dir, 0700)
|
||||
except OSError, e:
|
||||
print >>sys.stderr, \
|
||||
'fatal: cannot make %s directory: %s' % (
|
||||
gpg_dir, e.strerror)
|
||||
sys.exit(1)
|
||||
|
||||
env = dict(os.environ)
|
||||
env['GNUPGHOME'] = gpg_dir
|
||||
|
||||
cmd = ['gpg', '--import']
|
||||
try:
|
||||
proc = subprocess.Popen(cmd,
|
||||
env = env,
|
||||
stdin = subprocess.PIPE)
|
||||
except OSError, e:
|
||||
if not quiet:
|
||||
print >>sys.stderr, 'warning: gpg (GnuPG) is not available.'
|
||||
print >>sys.stderr, 'warning: Installing it is strongly encouraged.'
|
||||
print >>sys.stderr
|
||||
return False
|
||||
|
||||
proc.stdin.write(MAINTAINER_KEYS)
|
||||
proc.stdin.close()
|
||||
|
||||
if proc.wait() != 0:
|
||||
print >>sys.stderr, 'fatal: registering repo maintainer keys failed'
|
||||
sys.exit(1)
|
||||
print
|
||||
|
||||
fd = open(os.path.join(home_dot_repo, 'keyring-version'), 'w')
|
||||
fd.write('.'.join(map(lambda x: str(x), KEYRING_VERSION)) + '\n')
|
||||
fd.close()
|
||||
return True
|
||||
|
||||
|
||||
def _SetConfig(local, name, value):
|
||||
"""Set a git configuration option to the specified value.
|
||||
"""
|
||||
cmd = [GIT, 'config', name, value]
|
||||
if subprocess.Popen(cmd, cwd = local).wait() != 0:
|
||||
raise CloneFailure()
|
||||
|
||||
|
||||
def _Fetch(local, quiet, *args):
|
||||
cmd = [GIT, 'fetch']
|
||||
if quiet:
|
||||
cmd.append('--quiet')
|
||||
err = subprocess.PIPE
|
||||
else:
|
||||
err = None
|
||||
cmd.extend(args)
|
||||
cmd.append('origin')
|
||||
|
||||
proc = subprocess.Popen(cmd, cwd = local, stderr = err)
|
||||
if err:
|
||||
proc.stderr.read()
|
||||
proc.stderr.close()
|
||||
if proc.wait() != 0:
|
||||
raise CloneFailure()
|
||||
|
||||
|
||||
def _Clone(url, local, quiet):
|
||||
"""Clones a git repository to a new subdirectory of repodir
|
||||
"""
|
||||
try:
|
||||
os.mkdir(local)
|
||||
except OSError, e:
|
||||
print >>sys.stderr, \
|
||||
'fatal: cannot make %s directory: %s' \
|
||||
% (local, e.strerror)
|
||||
raise CloneFailure()
|
||||
|
||||
cmd = [GIT, 'init', '--quiet']
|
||||
try:
|
||||
proc = subprocess.Popen(cmd, cwd = local)
|
||||
except OSError, e:
|
||||
print >>sys.stderr
|
||||
print >>sys.stderr, "fatal: '%s' is not available" % GIT
|
||||
print >>sys.stderr, 'fatal: %s' % e
|
||||
print >>sys.stderr
|
||||
print >>sys.stderr, 'Please make sure %s is installed'\
|
||||
' and in your path.' % GIT
|
||||
raise CloneFailure()
|
||||
if proc.wait() != 0:
|
||||
print >>sys.stderr, 'fatal: could not create %s' % local
|
||||
raise CloneFailure()
|
||||
|
||||
_SetConfig(local, 'remote.origin.url', url)
|
||||
_SetConfig(local, 'remote.origin.fetch',
|
||||
'+refs/heads/*:refs/remotes/origin/*')
|
||||
_Fetch(local, quiet)
|
||||
_Fetch(local, quiet, '--tags')
|
||||
|
||||
|
||||
def _Verify(cwd, branch, quiet):
|
||||
"""Verify the branch has been signed by a tag.
|
||||
"""
|
||||
cmd = [GIT, 'describe', 'origin/%s' % branch]
|
||||
proc = subprocess.Popen(cmd,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
cwd = cwd)
|
||||
cur = proc.stdout.read().strip()
|
||||
proc.stdout.close()
|
||||
|
||||
proc.stderr.read()
|
||||
proc.stderr.close()
|
||||
|
||||
if proc.wait() != 0 or not cur:
|
||||
print >>sys.stderr
|
||||
print >>sys.stderr,\
|
||||
"fatal: branch '%s' has not been signed" \
|
||||
% branch
|
||||
raise CloneFailure()
|
||||
|
||||
m = re.compile(r'^(.*)-[0-9]{1,}-g[0-9a-f]{1,}$').match(cur)
|
||||
if m:
|
||||
cur = m.group(1)
|
||||
if not quiet:
|
||||
print >>sys.stderr
|
||||
print >>sys.stderr, \
|
||||
"info: Ignoring branch '%s'; using tagged release '%s'" \
|
||||
% (branch, cur)
|
||||
print >>sys.stderr
|
||||
|
||||
env = dict(os.environ)
|
||||
env['GNUPGHOME'] = gpg_dir
|
||||
|
||||
cmd = [GIT, 'tag', '-v', cur]
|
||||
proc = subprocess.Popen(cmd,
|
||||
stdout = subprocess.PIPE,
|
||||
stderr = subprocess.PIPE,
|
||||
cwd = cwd,
|
||||
env = env)
|
||||
out = proc.stdout.read()
|
||||
proc.stdout.close()
|
||||
|
||||
err = proc.stderr.read()
|
||||
proc.stderr.close()
|
||||
|
||||
if proc.wait() != 0:
|
||||
print >>sys.stderr
|
||||
print >>sys.stderr, out
|
||||
print >>sys.stderr, err
|
||||
print >>sys.stderr
|
||||
raise CloneFailure()
|
||||
return '%s^0' % cur
|
||||
|
||||
|
||||
def _Checkout(cwd, branch, rev, quiet):
|
||||
"""Checkout an upstream branch into the repository and track it.
|
||||
"""
|
||||
cmd = [GIT, 'update-ref', 'refs/heads/default', rev]
|
||||
if subprocess.Popen(cmd, cwd = cwd).wait() != 0:
|
||||
raise CloneFailure()
|
||||
|
||||
_SetConfig(cwd, 'branch.default.remote', 'origin')
|
||||
_SetConfig(cwd, 'branch.default.merge', 'refs/heads/%s' % branch)
|
||||
|
||||
cmd = [GIT, 'symbolic-ref', 'HEAD', 'refs/heads/default']
|
||||
if subprocess.Popen(cmd, cwd = cwd).wait() != 0:
|
||||
raise CloneFailure()
|
||||
|
||||
cmd = [GIT, 'read-tree', '--reset', '-u']
|
||||
if not quiet:
|
||||
cmd.append('-v')
|
||||
cmd.append('HEAD')
|
||||
if subprocess.Popen(cmd, cwd = cwd).wait() != 0:
|
||||
raise CloneFailure()
|
||||
|
||||
|
||||
def _FindRepo():
|
||||
"""Look for a repo installation, starting at the current directory.
|
||||
"""
|
||||
dir = os.getcwd()
|
||||
repo = None
|
||||
|
||||
while dir != '/' and not repo:
|
||||
repo = os.path.join(dir, repodir, REPO_MAIN)
|
||||
if not os.path.isfile(repo):
|
||||
repo = None
|
||||
dir = os.path.dirname(dir)
|
||||
return (repo, os.path.join(dir, repodir))
|
||||
|
||||
|
||||
class _Options:
|
||||
help = False
|
||||
|
||||
|
||||
def _ParseArguments(args):
|
||||
cmd = None
|
||||
opt = _Options()
|
||||
arg = []
|
||||
|
||||
for i in xrange(0, len(args)):
|
||||
a = args[i]
|
||||
if a == '-h' or a == '--help':
|
||||
opt.help = True
|
||||
|
||||
elif not a.startswith('-'):
|
||||
cmd = a
|
||||
arg = args[i + 1:]
|
||||
break
|
||||
return cmd, opt, arg
|
||||
|
||||
|
||||
def _Usage():
|
||||
print >>sys.stderr,\
|
||||
"""usage: repo COMMAND [ARGS]
|
||||
|
||||
repo is not yet installed. Use "repo init" to install it here.
|
||||
|
||||
The most commonly used repo commands are:
|
||||
|
||||
init Install repo in the current working directory
|
||||
help Display detailed help on a command
|
||||
|
||||
For access to the full online help, install repo ("repo init").
|
||||
"""
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def _Help(args):
|
||||
if args:
|
||||
if args[0] == 'init':
|
||||
init_optparse.print_help()
|
||||
else:
|
||||
print >>sys.stderr,\
|
||||
"error: '%s' is not a bootstrap command.\n"\
|
||||
' For access to online help, install repo ("repo init").'\
|
||||
% args[0]
|
||||
else:
|
||||
_Usage()
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def _NotInstalled():
|
||||
print >>sys.stderr,\
|
||||
'error: repo is not installed. Use "repo init" to install it here.'
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def _NoCommands(cmd):
|
||||
print >>sys.stderr,\
|
||||
"""error: command '%s' requires repo to be installed first.
|
||||
Use "repo init" to install it here.""" % cmd
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def _RunSelf(wrapper_path):
|
||||
my_dir = os.path.dirname(wrapper_path)
|
||||
my_main = os.path.join(my_dir, 'main.py')
|
||||
my_git = os.path.join(my_dir, '.git')
|
||||
|
||||
if os.path.isfile(my_main) and os.path.isdir(my_git):
|
||||
for name in ['git_config.py',
|
||||
'project.py',
|
||||
'subcmds']:
|
||||
if not os.path.exists(os.path.join(my_dir, name)):
|
||||
return None, None
|
||||
return my_main, my_git
|
||||
return None, None
|
||||
|
||||
|
||||
def _SetDefaultsTo(gitdir):
|
||||
global REPO_URL
|
||||
global REPO_REV
|
||||
|
||||
REPO_URL = gitdir
|
||||
proc = subprocess.Popen([GIT,
|
||||
'--git-dir=%s' % gitdir,
|
||||
'symbolic-ref',
|
||||
'HEAD'],
|
||||
stdout = subprocess.PIPE,
|
||||
stderr = subprocess.PIPE)
|
||||
REPO_REV = proc.stdout.read().strip()
|
||||
proc.stdout.close()
|
||||
|
||||
proc.stderr.read()
|
||||
proc.stderr.close()
|
||||
|
||||
if proc.wait() != 0:
|
||||
print >>sys.stderr, 'fatal: %s has no current branch' % gitdir
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def main(orig_args):
|
||||
main, dir = _FindRepo()
|
||||
cmd, opt, args = _ParseArguments(orig_args)
|
||||
|
||||
wrapper_path = os.path.abspath(__file__)
|
||||
my_main, my_git = _RunSelf(wrapper_path)
|
||||
|
||||
if not main:
|
||||
if opt.help:
|
||||
_Usage()
|
||||
if cmd == 'help':
|
||||
_Help(args)
|
||||
if not cmd:
|
||||
_NotInstalled()
|
||||
if cmd == 'init':
|
||||
if my_git:
|
||||
_SetDefaultsTo(my_git)
|
||||
try:
|
||||
_Init(args)
|
||||
except CloneFailure:
|
||||
for root, dirs, files in os.walk(repodir, topdown=False):
|
||||
for name in files:
|
||||
os.remove(os.path.join(root, name))
|
||||
for name in dirs:
|
||||
os.rmdir(os.path.join(root, name))
|
||||
os.rmdir(repodir)
|
||||
sys.exit(1)
|
||||
main, dir = _FindRepo()
|
||||
else:
|
||||
_NoCommands(cmd)
|
||||
|
||||
if my_main:
|
||||
main = my_main
|
||||
|
||||
ver_str = '.'.join(map(lambda x: str(x), VERSION))
|
||||
me = [main,
|
||||
'--repo-dir=%s' % dir,
|
||||
'--wrapper-version=%s' % ver_str,
|
||||
'--wrapper-path=%s' % wrapper_path,
|
||||
'--']
|
||||
me.extend(orig_args)
|
||||
me.extend(extra_args)
|
||||
try:
|
||||
os.execv(main, me)
|
||||
except OSError, e:
|
||||
print >>sys.stderr, "fatal: unable to start %s" % main
|
||||
print >>sys.stderr, "fatal: %s" % e
|
||||
sys.exit(148)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main(sys.argv[1:])
|
||||
|
||||
3
bin/_old/old2/secpass
Executable file
3
bin/_old/old2/secpass
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
|
||||
dd if=/dev/urandom bs=16 count=1 2>/dev/null | base64 | sed 's/=//g'
|
||||
3
bin/_old/old2/setua1g
Executable file
3
bin/_old/old2/setua1g
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
|
||||
pacmd "set-default-sink alsa_output.usb-Roland_UA-1G-00-UA1G.analog-stereo"
|
||||
397
bin/_old/old2/shellshow
Executable file
397
bin/_old/old2/shellshow
Executable file
|
|
@ -0,0 +1,397 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
# shellshow: terminal slideshow program with a few basic wipes
|
||||
# Probably the next version will be written in C, this was written in
|
||||
# perl for quick prototyping and for my @climagic presentation at
|
||||
# Indiana Linux Fest 2012.
|
||||
|
||||
# Copyright (C) 2012 Mark Krenz (Deltaray)
|
||||
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# You may contact the author at <deltaray@slugbug.org>
|
||||
|
||||
my $VERSION = 0.1;
|
||||
|
||||
$| = 1;
|
||||
my $rows = `tput lines`;
|
||||
my $cols = `tput cols`;
|
||||
|
||||
&setupterminal();
|
||||
|
||||
$SIG{INT} = sub { &restoreterminal(); };
|
||||
$SIG{TERM} = sub { &restoreterminal(); };
|
||||
|
||||
if (@ARGV < 2 || $ARGV[0] eq "-h" || $ARGV[0] eq "--help") {
|
||||
&showhelp();
|
||||
}
|
||||
|
||||
# A simple timing array to use for the slides to give them
|
||||
# a little acceleration.
|
||||
my @timing = ();
|
||||
for($i = 0; $i < $cols/2; $i++) {
|
||||
$time = 0.1 / ($i + 1);
|
||||
$timing[$i] = $time;
|
||||
}
|
||||
# Now make the other half of the timing array.
|
||||
for($i = $cols/2 - 1; $i >= 0; $i--) {
|
||||
# print "pushing " . $timing[$i] . " onto the list.\n";
|
||||
push(@timing, $timing[$i]);
|
||||
}
|
||||
|
||||
my @graydient = ();
|
||||
for ($i = 255; $i >= 232; $i--) { # Gray colors in the ansi color spectrum
|
||||
push(@graydient, $i);
|
||||
}
|
||||
|
||||
my @frames = ();
|
||||
my $frame = 0;
|
||||
|
||||
|
||||
foreach $file (@ARGV) {
|
||||
open(my $fh, $file);
|
||||
my $thisline;
|
||||
my $lineno = 0;
|
||||
LINE: while (<$fh>) {
|
||||
chomp($_);
|
||||
if ($lineno > $rows - 1) {
|
||||
last LINE;
|
||||
}
|
||||
$_ =~ s/\t/ /g; # Convert tabs into 4 spaces.
|
||||
my $thisline = substr($_, 0, $cols);
|
||||
if (length($_) > $cols) {
|
||||
$thisline = substr($thisline, $cols-1,1, "+"); # This does the pico/nano like behavior of showing that a line is overlength.
|
||||
}
|
||||
my $diff = $cols - length($thisline);
|
||||
if ($diff) {
|
||||
$thisline .= " " x $diff;
|
||||
}
|
||||
$frames[$frame][$lineno] = $thisline;
|
||||
$lineno++;
|
||||
}
|
||||
if ($lineno <= $rows) {
|
||||
my $thisline = " " x $cols;
|
||||
foreach ($lineno; $lineno <= $rows; $lineno++) {
|
||||
$frames[$frame][$lineno] = $thisline;
|
||||
}
|
||||
}
|
||||
$frame++;
|
||||
close($fh);
|
||||
}
|
||||
|
||||
my $totalframes = scalar @frames;
|
||||
|
||||
print "\033[2J";
|
||||
#foreach $frameno (keys @frames) {
|
||||
$frameno = 0;
|
||||
while ($frameno < $totalframes && $frameno >= 0) {
|
||||
poscursor(1,1);
|
||||
displayframe(\@frames,$frameno,$cols,$rows);
|
||||
|
||||
# Seems crazy to have to run system commands twice just to read a char.
|
||||
# We'll make this more efficient in the future and/or switch to C.
|
||||
if ($BSD_STYLE) {
|
||||
system "stty cbreak </dev/tty >/dev/tty 2>&1";
|
||||
} else {
|
||||
system "stty", '-icanon', 'eol', "\001";
|
||||
}
|
||||
$read = getc();
|
||||
if ($BSD_STYLE) {
|
||||
system "stty -cbreak </dev/tty >/dev/tty 2>&1";
|
||||
} else {
|
||||
system 'stty', 'icanon', 'eol', '^@'; # ASCII NUL
|
||||
}
|
||||
|
||||
# Do the transition. Perl needs a case to store all the Pearls.
|
||||
if ($read eq "\n" or $read eq " ") { # Return or space to move forward.
|
||||
$oldframe = $frameno;
|
||||
$newframe = $frameno+1;
|
||||
slideright(\@frames,$oldframe,$newframe, $cols, $rows, \@timing);
|
||||
$frameno = $newframe;
|
||||
} elsif ($read eq "\177" or $read eq "b") { # Backspace to go back.
|
||||
$oldframe = $frameno;
|
||||
$newframe = $frameno-1;
|
||||
slideleft(\@frames,$oldframe,$newframe, $cols, $rows, \@timing);
|
||||
$frameno = $newframe;
|
||||
} elsif ($read eq "l") { # l to move forward using line at a time wipe
|
||||
$oldframe = $frameno;
|
||||
$newframe = $frameno+1;
|
||||
slidelineright(\@frames,$oldframe,$newframe, $cols, $rows, \@timing);
|
||||
$frameno = $newframe;
|
||||
} elsif ($read eq "k") { # l to move forward using line at a time wipe
|
||||
$oldframe = $frameno;
|
||||
$newframe = $frameno-1;
|
||||
slidelineleft(\@frames,$oldframe,$newframe, $cols, $rows, \@timing);
|
||||
$frameno = $newframe;
|
||||
} elsif ($read eq "f") { # f to move forward using fade method.
|
||||
$oldframe = $frameno;
|
||||
$newframe = $frameno+1;
|
||||
fadeoutfadein(\@frames,$oldframe,$newframe, $cols, $rows, \@graydient, 0.01);
|
||||
$frameno = $newframe;
|
||||
} elsif ($read eq "d") { # f to move forward using fade method.
|
||||
$oldframe = $frameno;
|
||||
$newframe = $frameno-1;
|
||||
fadeoutfadein(\@frames,$oldframe,$newframe, $cols, $rows, \@graydient, 0.01);
|
||||
$frameno = $newframe;
|
||||
}
|
||||
# Maybe have an r for random. Later of course we should allow a YAML config
|
||||
# file or something to setup a saved show so you can just play that with
|
||||
# predetermined wipes and waittimes, etc.
|
||||
}
|
||||
|
||||
&restoreterminal();
|
||||
exit 0;
|
||||
|
||||
|
||||
sub showhelp {
|
||||
print <<"EOF";
|
||||
--------------------------------------------------------------------------------
|
||||
shellshow: A program to show "slides" in an interesting way inside the terminal
|
||||
Version: $VERSION
|
||||
--------------------------------------------------------------------------------
|
||||
Usage:
|
||||
shellshow <file1> <file2> [file3 [, file4, [ ... ]]]
|
||||
|
||||
Movement/Wipes:
|
||||
<space>, <enter> = Move forward a frame in slide motion.
|
||||
<b>, <backspace> = Move backward a frame in slide motion.
|
||||
<l> = Move forward with slideline wipe. (slow)
|
||||
<k> = Move backward with slideline wipe. (slow)
|
||||
<f> = Move forward with fadeout/fadein wipe. (req. black bg)
|
||||
<d> = Move backward with fadeout/fadein wipe. (req. black bg)
|
||||
|
||||
Description:
|
||||
Shellshow determines the size of your terminal window and reads in
|
||||
files given as args as frames, storing only the part of the file that
|
||||
will fit inside the terminal window. You must at least give two filenames
|
||||
as arguments. You can use shell glob patterns/wildcards if you want.
|
||||
|
||||
Limitations:
|
||||
Right now this program can't handle files with ANSI escapes or multibyte
|
||||
characters like UTF-8 or binary characters.
|
||||
|
||||
I'd recommend using a black background with white forground text for now.
|
||||
Eventually we'll have options for working with various background types, etc.
|
||||
|
||||
EOF
|
||||
exit(0);
|
||||
}
|
||||
|
||||
sub setupterminal {
|
||||
# I could have used Curses, but decided not to go that route
|
||||
# for a bit more simplicity right now.
|
||||
system('tput', 'smcup'); # Must be called using system.
|
||||
# Backticks won't work.
|
||||
# The codes for smcup were listed as [?1049h on some page as well. :-(
|
||||
# printf "\0337\033[?47h"; # Switch to alternate screen (smcup)
|
||||
printf "\033[?25l"; # Hide the cursor (civis)
|
||||
`stty -echo`; # Turn off input echo.
|
||||
}
|
||||
|
||||
sub restoreterminal {
|
||||
system('tput', 'rmcup');
|
||||
# printf "\033[2J\033[?47l"; # Switch back to normal screen (rmcup)
|
||||
printf "\033[?25h"; # show the cursor again. (cnorm)
|
||||
`stty echo`; # Turn input echo back on.
|
||||
exit 0;
|
||||
}
|
||||
|
||||
sub displayframe {
|
||||
my $framesref = shift;
|
||||
my $frame = shift;
|
||||
my $cols = shift;
|
||||
my $rows = shift;
|
||||
|
||||
my $line = "";
|
||||
poscursor(1, 1);
|
||||
for ($y = 0; $y < $rows; $y++) {
|
||||
$line = substr($$framesref[$frame][$y], 0, $cols);
|
||||
if ($y + 1 == $rows) {
|
||||
print "$line"; # Don't put a newline on the last line.
|
||||
} else {
|
||||
print "$line\n";
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
sub slideright {
|
||||
$framesref = shift;
|
||||
$oldframe = shift;
|
||||
$newframe = shift;
|
||||
$cols = shift;
|
||||
$rows = shift;
|
||||
$timingref = shift;
|
||||
|
||||
if (defined($$framesref[$newframe])) {
|
||||
my $leftline = "";
|
||||
my $rightline = "";
|
||||
for ($x = 1; $x < $cols; $x++) {
|
||||
poscursor(1, 1);
|
||||
for ($y = 0; $y < $rows; $y++) {
|
||||
$leftline = substr($$framesref[$oldframe][$y], $x);
|
||||
$rightline = substr($$framesref[$newframe][$y], 0, $x);
|
||||
if ($y + 1 == $rows) {
|
||||
print "$leftline$rightline"; # Don't put a newline on the last line.
|
||||
} else {
|
||||
print "$leftline$rightline\n";
|
||||
}
|
||||
}
|
||||
select(undef,undef, undef, $$timingref[$x]);
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
sub slideleft {
|
||||
$framesref = shift;
|
||||
$oldframe = shift;
|
||||
$newframe = shift;
|
||||
$cols = shift;
|
||||
$rows = shift;
|
||||
$timingref = shift;
|
||||
|
||||
if (defined($$framesref[$oldframe])) {
|
||||
my $leftline = "";
|
||||
my $rightline = "";
|
||||
for ($x = $cols - 1; $x > 0; $x--) {
|
||||
poscursor(1, 1);
|
||||
for ($y = 0; $y < $rows; $y++) {
|
||||
$leftline = substr($$framesref[$newframe][$y], $x);
|
||||
$rightline = substr($$framesref[$oldframe][$y], 0, $x);
|
||||
if ($y + 1 == $rows) {
|
||||
print "$leftline$rightline"; # Don't put a newline on the last line.
|
||||
} else {
|
||||
print "$leftline$rightline\n";
|
||||
}
|
||||
}
|
||||
select(undef,undef, undef, $$timingref[$x]);
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
# These are too slow.
|
||||
sub slidelineright {
|
||||
$framesref = shift;
|
||||
$oldframe = shift;
|
||||
$newframe = shift;
|
||||
$cols = shift;
|
||||
$rows = shift;
|
||||
$timingref = shift;
|
||||
|
||||
if (defined($$framesref[$newframe])) {
|
||||
my $leftline = "";
|
||||
my $rightline = "";
|
||||
for ($y = 0; $y < $rows; $y++) {
|
||||
for ($x = 1; $x <= $cols; $x++) {
|
||||
poscursor(1,$y + 1);
|
||||
$leftline = substr($$framesref[$oldframe][$y], $x);
|
||||
$rightline = substr($$framesref[$newframe][$y], 0, $x);
|
||||
print "$leftline$rightline"; # Don't put a newline on the last line.
|
||||
select(undef,undef,undef, 0.001);
|
||||
}
|
||||
unless ($y + 1 == rows) {
|
||||
print "\n";
|
||||
}
|
||||
#select(undef,undef, undef, $$timingref[$y]);
|
||||
select(undef,undef, undef, 0.0001);
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
sub slidelineleft {
|
||||
$framesref = shift;
|
||||
$oldframe = shift;
|
||||
$newframe = shift;
|
||||
$cols = shift;
|
||||
$rows = shift;
|
||||
$timingref = shift;
|
||||
|
||||
if (defined($$framesref[$oldframe])) {
|
||||
my $leftline = "";
|
||||
my $rightline = "";
|
||||
for ($y = 0; $y < $rows; $y++) {
|
||||
for ($x = $cols; $x >= 0; $x--) {
|
||||
poscursor(1,$y + 1);
|
||||
$leftline = substr($$framesref[$newframe][$y], $x);
|
||||
$rightline = substr($$framesref[$oldframe][$y], 0, $x);
|
||||
print "$leftline$rightline"; # Don't put a newline on the last line.
|
||||
select(undef,undef,undef, 0.001);
|
||||
}
|
||||
unless ($y + 1 == rows) {
|
||||
print "\n";
|
||||
}
|
||||
#select(undef,undef, undef, $$timingref[$y]);
|
||||
select(undef,undef, undef, 0.0001);
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub fadeoutfadein {
|
||||
$framesref = shift;
|
||||
$oldframe = shift;
|
||||
$newframe = shift;
|
||||
$cols = shift;
|
||||
$rows = shift;
|
||||
$graydientref = shift;
|
||||
$wait = shift || 0.03;
|
||||
|
||||
if (defined($$framesref[$newframe])) {
|
||||
foreach my $color (@$graydientref) {
|
||||
poscursor(1,1);
|
||||
|
||||
for ($y = 0; $y < $rows; $y++) {
|
||||
print "\033[38;5;${color}m" . $$framesref[$oldframe][$y];
|
||||
unless ($y + 1 == $rows) {
|
||||
print "\n";
|
||||
}
|
||||
}
|
||||
select(undef,undef,undef, $wait);
|
||||
}
|
||||
foreach my $color (reverse @$graydientref) {
|
||||
poscursor(1,1);
|
||||
|
||||
for ($y = 0; $y < $rows; $y++) {
|
||||
print "\033[38;5;${color}m" . $$framesref[$newframe][$y];
|
||||
unless ($y + 1 == $rows) {
|
||||
print "\n";
|
||||
}
|
||||
}
|
||||
select(undef,undef,undef, $wait);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
sub poscursor {
|
||||
my $x = shift;
|
||||
my $y = shift;
|
||||
print "\033[${y};${x}H";
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
69
bin/_old/old2/ssbackup
Executable file
69
bin/_old/old2/ssbackup
Executable file
|
|
@ -0,0 +1,69 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Look at mkxpi!!! useful option code is there!!!
|
||||
|
||||
# alle db backups als user backup machen!!!
|
||||
#
|
||||
# /home/backup/bin/ für alles scripts! auch die, die dann von root ausgeführt
|
||||
# werden um backups zu amchen
|
||||
#
|
||||
# wenn kein parameter:
|
||||
# ?? /home/§USER/.ssconfig für ALLE config variablen fürs backup. nochmal
|
||||
# überlegen ob dies wirklich möglich ist mit einem script. sonst als parameter
|
||||
# übergeben
|
||||
|
||||
# import global lib here; import special libs below where the options are
|
||||
# parsed.
|
||||
. `dirname $0`/sslib
|
||||
|
||||
set -- `getopt -n$0 -u -a --longoptions="depth: adddays: topN:" "h" "$@"` || usage
|
||||
[ $# -eq 0 ] && usage
|
||||
|
||||
while [ $# -gt 0 ]
|
||||
do
|
||||
case "$1" in
|
||||
--depth) depth=$2;shift;;
|
||||
--adddays) adddays=$2;shift;;
|
||||
--topN) topN=$2;shift;;
|
||||
-h) usage;;
|
||||
--) shift;break;;
|
||||
-*) usage;;
|
||||
*) break;; #better be the crawl directory
|
||||
esac
|
||||
shift
|
||||
done
|
||||
echo $depth
|
||||
|
||||
#aflag=
|
||||
#cflag=
|
||||
#while getopts 'ac:' OPTION
|
||||
#do
|
||||
# case $OPTION in
|
||||
# a)
|
||||
# aflag=1
|
||||
# boo "hannes"
|
||||
# ;;
|
||||
# c)
|
||||
# bflag=1
|
||||
# cval="$OPTARG"
|
||||
# ;;
|
||||
# ?)
|
||||
# usage;
|
||||
# exit 2
|
||||
# ;;
|
||||
# esac
|
||||
#done
|
||||
#printf $OPTIND
|
||||
|
||||
if [ "$aflag" ]
|
||||
then
|
||||
printf "Option -a specified\n"
|
||||
fi
|
||||
if [ "$cflag" ]
|
||||
then
|
||||
printf 'Option -c "%s" specified\n' "$cval"
|
||||
fi
|
||||
printf "Remaining arguments are: %s\n" "$*"
|
||||
|
||||
|
||||
|
||||
20
bin/_old/old2/sslib
Executable file
20
bin/_old/old2/sslib
Executable file
|
|
@ -0,0 +1,20 @@
|
|||
#!/bin/bash
|
||||
|
||||
usage()
|
||||
{
|
||||
printf "Usage: %s: [-a] [-c value] args\n" $(basename $0) >&2
|
||||
#-b [backup type] Type of backup e.g. one of: global, state or log
|
||||
#-c [path] Path to config file; If this is set all params are read from there
|
||||
#-d [database names] Array of db names e.g.: "foo bar"
|
||||
#-g [game name] Name of the game e.g.: PirateGalaxy
|
||||
#-n [database names] The names of the DB's to backup e.g.: "PirateGalaxy_Global PirateGalaxy_Payment PirateGalaxy_News"
|
||||
#-u [game username] Name of the user the games runs on e.g.: pirategalaxy
|
||||
}
|
||||
|
||||
|
||||
boo()
|
||||
{
|
||||
USER=$1
|
||||
shift;
|
||||
echo "Param USER: $USER ...!!"
|
||||
}
|
||||
27
bin/_old/old2/ssterm
Executable file
27
bin/_old/old2/ssterm
Executable file
|
|
@ -0,0 +1,27 @@
|
|||
#!/bin/sh
|
||||
|
||||
EU_HOSTS="eu-admin-01.splitscreenserver.com
|
||||
eu-db-01.splitscreenserver.com
|
||||
eu-db-02.splitscreenserver.com
|
||||
eu-gs-01.splitscreenserver.com
|
||||
eu-gs-02.splitscreenserver.com
|
||||
eu-gs-03.splitscreenserver.com
|
||||
eu-gs-04.splitscreenserver.com
|
||||
eu-gs-05.splitscreenserver.com
|
||||
eu-gs-06.splitscreenserver.com
|
||||
eu-gs-07.splitscreenserver.com
|
||||
eu-ptr-01.splitscreenserver.com
|
||||
eu-web-01.splitscreenserver.com"
|
||||
|
||||
US_HOSTS="us-gs-01.splitscreenserver.com
|
||||
us-gs-02.splitscreenserver.com
|
||||
us-web-01.splitscreenserver.com"
|
||||
|
||||
for HOST in $EU_HOSTS; do
|
||||
uxterm -bg black -fg grey -sb -leftbar -si -bc -cr orange -e ssh $HOST & sleep 1
|
||||
done
|
||||
|
||||
for HOST in $US_HOSTS; do
|
||||
uxterm -bg black -fg grey -sb -leftbar -si -bc -cr orange -e ssh $HOST & sleep 1
|
||||
done
|
||||
|
||||
30
bin/_old/old2/ssvars
Executable file
30
bin/_old/old2/ssvars
Executable file
|
|
@ -0,0 +1,30 @@
|
|||
#!/bin/bash
|
||||
|
||||
|
||||
|
||||
|
||||
BACKUP_USER=backup
|
||||
BACKUP_DIR=/home/backup
|
||||
BACKUP_BIN_DIR=/home/backup/bin
|
||||
|
||||
GAME_NAME=PirateGalaxy
|
||||
|
||||
SYSTEM_USERNAME=pirategalaxy
|
||||
|
||||
DB_USERNAME=$GAME_NAME
|
||||
DB_PASSWORD=zpd7hq9sN28hEDUd
|
||||
|
||||
DB_HOST=localhost
|
||||
|
||||
# List of DBNAMES for Daily/Weekly Backup e.g. "DB1 DB2 DB3"
|
||||
DB_NAMES_GLOBAL="PirateGalaxy_Global PirateGalaxy_Payment PirateGalaxy_News"
|
||||
DB_BACKUP_DIR_GLOBAL="/home/pirategalaxy/backup/sql"
|
||||
|
||||
DB_NAMES_STATE="PirateGalaxy_State"
|
||||
DB_BACKUP_DIR_GLOBAL="/home/pirategalaxy/backup/$DB_NAMES_STATE"
|
||||
|
||||
DB_NAMES_LOG="PirateGalaxy_Log"
|
||||
DB_BACKUP_DIR_LOG="/home/pirategalaxy/backup/history"
|
||||
|
||||
|
||||
MAILADDR="jf@splitscreenstudios.com"
|
||||
3
bin/_old/old2/steam.sh
Executable file
3
bin/_old/old2/steam.sh
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
|
||||
STEAM_RUNTIME=1 /usr/bin/steam %U
|
||||
4
bin/_old/old2/wikidpad
Executable file
4
bin/_old/old2/wikidpad
Executable file
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/bash
|
||||
|
||||
cd ~/opt/wikidpad
|
||||
python WikidPad.py
|
||||
21
bin/_old/old2/wsync
Executable file
21
bin/_old/old2/wsync
Executable file
|
|
@ -0,0 +1,21 @@
|
|||
#!/bin/bash
|
||||
|
||||
# $1 local host
|
||||
# $2 remote host
|
||||
|
||||
|
||||
mkdir ~/tmp/.hanez_org
|
||||
|
||||
cd ~/tmp/.hanez_org
|
||||
|
||||
wget -m http://hanez
|
||||
|
||||
rsync --delete -avr --times --exclude=.svn ~/www/hanez.org/htdocs/files/ ~/tmp/.hanez_org/hanez/files/
|
||||
|
||||
rsync --delete -avr --times --exclude=.svn ~/www/hanez.org/htdocs/images/ ~/tmp/.hanez_org/hanez/images/
|
||||
|
||||
rsync --delete -r -v -z --perms --group --times ~/tmp/.hanez_org/hanez/ hanez.org:/var/www/hanez.org/www/htdocs/
|
||||
|
||||
rm -rf ~/tmp/.hanez_org
|
||||
|
||||
#rsync --delete -r -v -z /home/www/hanez.org/ hanez.org:/var/www/hanez.org/www/ --exclude=*~ --exclude=wp-config.php --exclude=.svn --exclude=tmp.txt --exclude=cache/* --exclude=comments/* --perms --group --times
|
||||
4
bin/eagle
Executable file
4
bin/eagle
Executable file
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/bash
|
||||
|
||||
LANGUAGE=de_DE LANG=de_DE /usr/bin/eagle
|
||||
|
||||
4
bin/gnucash
Executable file
4
bin/gnucash
Executable file
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/bash
|
||||
|
||||
LANGUAGE=de_DE LANG=de_DE /usr/bin/gnucash %f
|
||||
|
||||
BIN
bin/lit
Executable file
BIN
bin/lit
Executable file
Binary file not shown.
BIN
bin/luvi
Executable file
BIN
bin/luvi
Executable file
Binary file not shown.
BIN
bin/luvit
Executable file
BIN
bin/luvit
Executable file
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue