Add bash configuration files

This commit is contained in:
xavier 2013-04-24 16:58:31 +02:00
parent 1849cd96a2
commit 9fad99b12f
30 changed files with 570 additions and 0 deletions

8
aliases.d/colors Normal file
View File

@ -0,0 +1,8 @@
#!/bin/bash
# Colors
alias ls='ls --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
alias less='less -R'

4
aliases.d/fun Normal file
View File

@ -0,0 +1,4 @@
#!/bin/bash
# Fun
alias matrix='tr -c "[:digit:]" " " < /dev/urandom | dd cbs=$COLUMNS conv=unblock | GREP_COLOR="1;32" grep --color "[^ ]"'

8
aliases.d/generic Normal file
View File

@ -0,0 +1,8 @@
#!/bin/bash
# Cd
alias cdup='cd ..'
# Ls
alias ll='ls -lh'
alias lla='ls -lha'

17
aliases.d/git Normal file
View File

@ -0,0 +1,17 @@
#!/bin/bash
# Git
if [ -x /usr/bin/git ]
then
alias gs='git status'
alias ga='git add'
alias gc='git commit'
alias gca='git commit -a'
alias gp='git push'
alias gu='git pull'
alias gd='git diff'
alias gb='git branch'
alias gco='git checkout'
alias gw='git whatchanged'
alias gl='git log --graph'
fi

6
aliases.d/power Normal file
View File

@ -0,0 +1,6 @@
#!/bin/bash
# Power
alias reboot='sudo reboot'
alias halt='sudo halt'
alias shutdown='sudo shutdown'

6
aliases.d/security Normal file
View File

@ -0,0 +1,6 @@
#!/bin/bash
# Security
alias rm='rm -i'
alias mv='mv -i'
alias cp='cp -i'

4
aliases.d/ssh Normal file
View File

@ -0,0 +1,4 @@
#!/bin/bash
# SSH
alias ssh!='ssh -q -oStrictHostKeyChecking=no -oIdentitiesOnly=yes'

5
aliases.d/system Normal file
View File

@ -0,0 +1,5 @@
#!/bin/bash
# System tools
if [ -f /sbin/ifconfig ] && [ -x /sbin/ifconfig ]; then alias ifconfig='/sbin/ifconfig'; fi
if [ -f /sbin/ip ] && [ -x /sbin/ip ]; then alias ip='/sbin/ip'; fi

9
aliases.d/vim Normal file
View File

@ -0,0 +1,9 @@
#!/bin/bash
# Vim Editor
if [ -x /usr/bin/vim ]
then
alias vi='vim -p'
alias view='vim -R'
alias vless='vim -u /usr/share/vim/vim73/macros/less.vim'
fi

2
bash_logout Normal file
View File

@ -0,0 +1,2 @@
# Clear the screen for security's sake.
clear

14
bash_profile Normal file
View File

@ -0,0 +1,14 @@
#!/bin/bash
if [ -f $HOME/.bash/profile ]; then source $HOME/.bash/profile; fi
if [ -d $HOME/.bash/profile ]; then for file in $(ls $HOME/.bash/profile/*); do source $file; done; fi
if [ -d $HOME/.bash/profile.d ]; then for file in $(ls $HOME/.bash/profile.d/*); do source $file; done; fi
# This file is sourced by bash for login shells. The following line
# runs your .bashrc and is recommended by the bash info pages.
[[ -f ~/.bashrc ]] && . ~/.bashrc
if [ -d $HOME/.gem/ruby/1.9.1/bin ] ; then export PATH=$PATH:$HOME/.gem/ruby/1.9.1/bin ; fi
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting

65
bashrc Normal file
View File

@ -0,0 +1,65 @@
# This file is sourced by all *interactive* bash shells on startup,
# including some apparently interactive shells such as scp and rcp
# that can't tolerate any output. So make sure this doesn't display
# anything or bad things will happen !
# Test for an interactive shell. There is no need to set anything
# past this point for scp and rcp, and it's important to refrain from
# outputting anything in those cases.
if [[ $- != *i* ]] ; then
# Shell is non-interactive. Be done now!
return
fi
# Source custom libs
if [ -d $HOME/.bash/libs ]; then for lib in $(ls $HOME/.bash/libs/*.bash); do source $lib; done; fi
# Source alias definitions
if [ -f $HOME/.bash_aliases ]; then source $HOME/.bash_aliases; fi
if [ -f $HOME/.bash/aliases ]; then source $HOME/.bash/aliases; fi
if [ -d $HOME/.bash/aliases ]; then for file in $(ls $HOME/.bash/aliases/*); do source $file; done; fi
if [ -d $HOME/.bash/aliases.d ]; then for file in $(ls $HOME/.bash/aliases.d/*); do source $file; done; fi
# Source bash completion definitions
[[ -f /etc/bash-completion ]] && source /etc/bash-completion
[[ -f /etc/profile.d/bash-completion ]] && source /etc/profile.d/bash-completion
if [ -f $HOME/.bash_completion ]; then source $HOME/.bash_completion; fi
if [ -f $HOME/.bash/completion ]; then source $HOME/.bash/completion; fi
if [ -d $HOME/.bash/completion ]; then for file in $(ls $HOME/.bash/completion/*); do source $file; done; fi
if [ -d $HOME/.bash/completion.d ]; then for file in $(ls $HOME/.bash/completion.d/*); do source $file; done; fi
# Customize the prompt
if [ "$UID" -eq 0 ]; then
export PS1='\[\e[01;31m\]\u@\h\[\e[01;34m\] \w \$\[\e[0m\] '
else
export PS1='\[\e[01;32m\]\u@\h\[\e[01;34m\] \w \$\[\e[0m\] '
fi
smiley() {
ret_val=$?
if [ "$ret_val" = "0" ]
then
echo -e "\e[01;32m:)\e[0m"
else
echo -e "\e[01;31m:(\e[0m"
fi
}
#export PS1='\[\e[01;32m\]\u@\h\[\e[01;34m\] \w \$\[\e[0m\] '"\$(smiley) "
# Enable colors for ls, etc. Prefer ~/.dir_colors #64489
if [[ -f ~/.dir_colors ]]; then
eval `dircolors -b ~/.dir_colors`
elif [[ -f /etc/DIR_COLORS ]]; then
eval `dircolors -b /etc/DIR_COLORS`
fi
# Change the window title of X terminals
case $TERM in
xterm*|rxvt*|urxvt*|Eterm)
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\007"'
;;
screen*)
PROMPT_COMMAND='echo -ne "\033k${USER}@${HOSTNAME%%.*}\033\\"'
;;
esac

10
completion.d/ssh Normal file
View File

@ -0,0 +1,10 @@
#!/bin/bash
#SSH
if [ -e ~/.ssh/config ]; then
complete -W "$(cat ~/.ssh/config | egrep -i "^\s*host\s+[a-zA-Z]" | sed -e "s/^host\s*//i")" ssh
fi
if [ -e ~/.ssh/known_hosts ]; then
complete -W "$(cat ~/.ssh/known_hosts | cut -f 1 -d ' ' | sed -e s/,.*//g | uniq | grep -v "\[")" ssh
fi

9
create-links.bash Executable file
View File

@ -0,0 +1,9 @@
#!/bin/bash
cd $HOME || exit 1
CONFDIR=.bash
ln -sf $CONFDIR/bash_profile .bash_profile
ln -sf $CONFDIR/bashrc .bashrc
ln -sf $CONFDIR/bash_logout .bash_logout

5
libs/basedir.bash Executable file
View File

@ -0,0 +1,5 @@
#!/bin/bash
function basedir() {
echo $( cd $(dirname $0) && pwd )
}

16
libs/cgroups.bash Executable file
View File

@ -0,0 +1,16 @@
#!/bin/bash
# Use cgroups
if [ "$PS1" ] ; then
if [ -d /sys/fs/cgroup ] ; then
cdir=/sys/fs/cgroup
elif [ -d /dev/cgroup ]; then
cdir=/dev/cgroup
fi
if [ -z "$cdir" ]; then
mkdir -p -m 0700 $cdir/user/$$ > /dev/null 2>&1
/bin/echo $$ > $cdir/user/$$/tasks
/bin/echo '1' > $cdir/user/$$/notify_on_release
unset -v cdir
fi
fi

94
libs/colors.bash Executable file
View File

@ -0,0 +1,94 @@
#!/bin/bash
#ANSI CODES
#Code Effect
#0 All attributes off
#1 Bold
#2 Faint
#3 Italic
#4 Underline
#5 Blink
#6 Rapid blink
#7 Reverse video
#8 Concealed
#30 Black foreground
#31 Red foreground
#32 Green foreground
#33 Yellow foreground
#34 Blue foreground
#35 Magenta foreground
#36 Cyan foreground
#37 White foreground
#40 Black background
#41 Red background
#42 Green background
#43 Yellow background
#44 Blue background
#45 Magenta background
#46 Cyan background
#47 White background
#48 Subscript
#49 Superscript
#T_ROWS=`tput lines` # Define current terminal dimension
#T_COLS=`tput cols` #+ in rows and columns.
#_UNDERLINE_ON=`tput smul` # turn on underline
#_UNDERLINE_OFF=`tput rmul` # turn off underline
#tput setf 4 # tput setf {fg color number}
#tput setb 2 # tput setb {bg color number}
#tput bold - Bold effect
#tput tsmi - Italic
#tput rev - Display inverse colors
#tput sgr0 - Reset everything
default='\E[39;49;00m'
bold='\E[1m'
italic='\E[3m'
underline='\E[4m'
blink='\E[5m'
blackonwhite='\E[30;47m'
#reset=`escape 0m`
#black='\E[30;47m'
#red='\E[31;47m'
#green='\E[32;47m'
#yellow='\E[33;47m'
#blue='\E[34;47m'
#magenta='\E[35;47m'
#cyan='\E[36;47m'
#white='\E[37;47m'
#bold_on=`escape 1m`
#bold_off=`escape 22m`
#blink_on=`escape 5m`
#blink_off=`escape 25m`
function echo_reverse
{
echo -ne $blackonwhite
echo -ne "$*"
echo -e $default
}
function echo_italic
{
echo -ne $italic
echo -ne "$*"
echo -e $default
}
function echo_bold
{
echo -ne $bold
echo -ne "$*"
echo -e $default
}
function echo_underline
{
echo -ne $underline
echo -ne "$*"
echo -e $default
}

1
libs/grepp.bash Executable file
View File

@ -0,0 +1 @@
grepp() { x=$1; shift; perl -00ne ' print if /'"$x"'/i ' "$*" ; }

31
libs/ipplan.bash Executable file
View File

@ -0,0 +1,31 @@
#!/bin/bash
function ipplan_search_by_ip()
{
echo "select inet_ntoa(ipaddr) as ip, location, hname, descrip, userinf from ipaddr where ipaddr = inet_aton('$1');" | ssh virt-cha-nettools mysql --database ipplan --default-character-set=latin1 --table
}
function ipplan_search_by_location()
{
echo "select inet_ntoa(ipaddr) as ip, location, hname, descrip, userinf from ipaddr where location like '%$1%';" | ssh virt-cha-nettools mysql --database ipplan --default-character-set=latin1 --table
}
function ipplan_search_by_name()
{
echo "select inet_ntoa(ipaddr) as ip, location, hname, descrip, userinf from ipaddr where hname like '%$1%';" | ssh virt-cha-nettools mysql --database ipplan --default-character-set=latin1 --table
}
function ipplan_search_by_desc()
{
echo "select inet_ntoa(ipaddr) as ip, location, hname, descrip, userinf from ipaddr where descrip like '%$1%';" | ssh virt-cha-nettools mysql --database ipplan --default-character-set=latin1 --table
}
function ipplan_search_by_user()
{
echo "select inet_ntoa(ipaddr) as ip, location, hname, descrip, userinf from ipaddr where userinf like '%$1%';" | ssh virt-cha-nettools mysql --database ipplan --default-character-set=latin1 --table
}
function ipplan_list_ingesys()
{
echo "select inet_ntoa(ipaddr) as ip, location, hname, descrip, userinf from ipaddr where userinf like '%ing%sys%'; " | ssh virt-cha-nettools mysql --database ipplan --default-character-set=latin1 --table
}

17
libs/password.bash Executable file
View File

@ -0,0 +1,17 @@
#!/bin/bash
encpasswd() {
local password_clear=$1
local password_md5hash=$(openssl passwd -1 $password_clear)
echo "Password : $password_clear"
echo "MD5HASH : $password_md5hash"
}
genpasswd() {
local l=$1
[ "$l" == "" ] && l=12
local password_clear=$(tr -dc A-Za-z0-9_ < /dev/urandom | head -c ${l} | xargs)
local password_md5hash=$(openssl passwd -1 $password_clear)
echo "Password : $password_clear"
echo "MD5HASH : $password_md5hash"
}

26
libs/screen.bash Executable file
View File

@ -0,0 +1,26 @@
#!/bin/bash
# GNU Screen stuff
if ( which screen &> /dev/null )
then
if [[ $TERM != screen* ]]
then
if [ "$(screen -ls | sed -ne 's/[[:space:]]//' -ne 's/(Attached)// p')" ]
then
echo ''
echo_reverse 'Il existe des sessions screen attachées sur cette machine pour cet utilisateur !'
echo ''
screen -ls | grep "Attached" | sed -e 's/^/ /'
echo ''
fi
if [ "$(screen -ls | sed -ne 's/[[:space:]]//' -ne 's/(Detached)// p')" ]
then
echo ''
echo_reverse "Il existe des sessions screen détachées sur cette machine pour cet utilisateur !"
echo ''
screen -ls | grep "Detached" | sed -e 's/^/ /'
echo ''
fi
fi
fi

17
libs/term.bash Executable file
View File

@ -0,0 +1,17 @@
#!/bin/bash
function term_change_title
{
case $TERM in
# Change the window title of X terminals
xterm*|rxvt*|urxvt*|Eterm)
PROMPT_COMMAND='echo -ne "\033]0;${1}\007"'
;;
# Change the window title of screen terminals
screen*)
PROMPT_COMMAND='echo -ne "\033k${1}\033\\"'
;;
esac
}

11
libs/urxvt.bash Executable file
View File

@ -0,0 +1,11 @@
#!/bin/bash
function urxvt_set_font
{
printf '\33]50;%s\007' "xft:$1"
}
function urxvt_set_title
{
# set window title
printf '\33]2;%s\007' "$1"
}

152
libs/virtualization.bash Executable file
View File

@ -0,0 +1,152 @@
#!/bin/bash
hypervisor_connect() {
if [ -e "${1}" ]; then echo "Usage : $0 hypervisor_name_or_ip"; return 1; fi
hypervisor=${1}
echo
echo "Trying to start interactive virsh session on ${hypervisor}"
virsh --connect=qemu+ssh://${USER}@${hypervisor}/system
}
hypervisor_command() {
if [ -e "${1}" ]; then echo "Usage : $0 hypervisor_name_or_ip"; return 1; fi
hypervisor=${1}
shift
echo
echo "Trying to exec virsh command ($*) on ${hypervisor}"
virsh --connect=qemu+ssh://${USER}@${hypervisor}/system "$*"
}
vm_create() {
if [ $# -ne 5 ]; then echo "Usage : $0 hypervisor_name_or_ip vm_name vm_ram_size vm_disk_size vm_mac"; return 1; fi
hypervisor=${1}
name=${2}
ramsize=${3}
disksize=${4}
mac=${5}
#mac=$( grep ${name} ~/repositories/fai/config-dhcp/dhcpd-hosts.conf | sed -e 's/^.*hardware.*ethernet\s*\([0-9a-zA-Z:]*\);.*$/\1/' )
echo "Creating VM with virt-install"
virt-install --connect=qemu+ssh://${USER}@${hypervisor}/system \
--name=${name} \
--description="${name}" \
--cpu=host \
--ram=${ramsize} \
--disk=/dev/lvm_guests_system/${name},size=${disksize},bus=virtio,cache=writethrough,io=native \
--network=bridge=br192,mac=${mac},model=virtio \
--os-type=linux \
--os-variant=debiansqueeze \
--boot=network,hd,menu=on \
--pxe \
--graphics=vnc \
--noautoconsole
echo "Done"
}
vm_start() {
if [ $# -ne 2 ]; then echo "Usage : $0 hypervisor_name_or_ip vm_name"; return 1; fi
hypervisor=${1}
name=${2}
echo
echo "Trying to start ${name} on ${hypervisor} with virsh"
virsh --connect=qemu+ssh://${USER}@${hypervisor}/system start ${name}
}
vm_stop() {
if [ $# -ne 2 ]; then echo "Usage : $0 hypervisor_name_or_ip vm_name"; return 1; fi
hypervisor=${1}
name=${2}
echo
echo "Trying to stop ${name} on ${hypervisor} with virsh"
virsh --connect=qemu+ssh://${USER}@${hypervisor}/system shutdown ${name}
}
vm_destroy() {
if [ $# -ne 2 ]; then echo "Usage : $0 hypervisor_name_or_ip vm_name"; return 1; fi
hypervisor=${1}
name=${2}
echo
echo "Trying to destroy ${name} on ${hypervisor} with virsh"
virsh --connect=qemu+ssh://${USER}@${hypervisor}/system destroy ${name}
}
vm_connect() {
if [ $# -ne 2 ]; then echo "Usage : $0 hypervisor_name_or_ip vm_name"; return 1; fi
hypervisor=${1}
name=${2}
echo
echo "Trying to connect to ${name} on ${hypervisor} with virsh"
virsh --connect=qemu+ssh://${USER}@${hypervisor}/system ttyconsole ${name}
virsh --connect=qemu+ssh://${USER}@${hypervisor}/system console ${name}
}
#### A tester
vm_change_bridge() {
if [ $# -ne 2 ]; then echo "Usage : $0 hypervisor_name_or_ip vm_name vm_mac vm_new_bridge"; return 1; fi
hypervisor=${1}
name=${2}
mac=${3}
bridge=${4}
#domiflist ${name}
#detach-interface --config --domain ${name} --type bridge --mac ${mac}
#attach-interface --config --domain ${name} --type bridge --mac ${mac} --source ${bridge}
}
#### A tester
vm_add_data_disk() {
if [ $# -ne 2 ]; then echo "Usage : $0 hypervisor_name_or_ip vm_name size"; return 1; fi
hypervisor=${1}
name=${2}
size=${3}
#pool-list
#vol-create-as --pool guests_data --name virt-cha-mirror --capacity 200G --format raw
#attach-disk virt-cha-mirror /dev/lvm_guests_data/virt-cha-mirror vdb --cache writethrough
#domblklist virt-cha-mirror
}
#### bash completion
_hypervisors() {
if [ -e ~/.ssh/config ]; then
configured_hypervisors=$(cat ~/.ssh/config | egrep -i "^\s*host\s+[a-zA-Z]" | sed -e "s/^host\s*//i" | grep -i hypervisor)
fi
if [ -e ~/.ssh/known_hosts ]; then
known_hypervisors=$(cat ~/.ssh/known_hosts | cut -f 1 -d ' ' | sed -e s/,.*//g | grep -v "\[" | grep -i hypervisor | uniq)
fi
echo $configured_hypervisors $known_hypervisors
}
#complete -W "$(cat ~/.ssh/config | egrep -i "^\s*host\s+[a-zA-Z]" | sed -e "s/^host\s*//i" | grep -i hypervisor)" hypervisor_connect
complete -W "$(_hypervisors)" hypervisor_connect
complete -W "$(_hypervisors)" hypervisor_command
complete -W "$(_hypervisors)" vm_create
complete -W "$(_hypervisors)" vm_start
complete -W "$(_hypervisors)" vm_stop
complete -W "$(_hypervisors)" vm_connect

8
profile.d/apps Normal file
View File

@ -0,0 +1,8 @@
#!/bin/bash
# Defined prefered applications
export TERMINAL=urxvtc
export PAGER=less
export EDITOR=vim
export BROWSER=firefox

8
profile.d/history Normal file
View File

@ -0,0 +1,8 @@
#!/bin/bash
# Customize history format
export HISTSIZE=5000
export HISTFILESIZE=20000
export HISTTIMEFORMAT="[%d/%m/%Y %H:%M:%S] "
export HISTCONTROL="ignoreboth"
export HISTIGNORE="[bf]g:exit:history*:*rm*-rf*:*rm*-f*:reboot:ls:ll:man:mutt"

4
profile.d/lang Normal file
View File

@ -0,0 +1,4 @@
#!/bin/bash
# Define prefered LANG
export LANG=fr_FR.utf8

4
profile.d/mail Normal file
View File

@ -0,0 +1,4 @@
#!/bin/bash
# Mail
export MAILPATH=~/Mails/

5
profile.d/path Normal file
View File

@ -0,0 +1,5 @@
#!/bin/bash
# Customize PATH
if [ -d $HOME/bin ] ; then export PATH=$PATH:$HOME/bin ; fi
if [ -d $HOME/scripts ] ; then export PATH=$PATH:$HOME/scripts ; fi

4
profile.d/tsocks Normal file
View File

@ -0,0 +1,4 @@
#!/bin/bash
# Proxy
export TSOCKS_CONF_FILE=~/.config/tsocks/tsocks.conf