Zum Inhalt springen

Bash Scripts: Unterschied zwischen den Versionen

Amir (Diskussion | Beiträge)
Vierlex (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
 
(5 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 30: Zeile 30:
<pre>
<pre>
#!/bin/bash
#!/bin/bash
PREPARE=; ENTER=; CLEAN=; VERBOSE=;
PREPARE=; ENTER=; CLEAN=; VERBOSE=; X=; Y=;
RUN=/bin/bash
RUN="/bin/bash"
CONFIG=
CONFIG=
DISPLAY=


function verbose  { [ $VERBOSE ] && echo $@; $@ 1> /dev/null; }
function verbose  { [ $VERBOSE ] && echo $@; $@ 1> /dev/null; }
Zeile 38: Zeile 39:
function error { echo "error: $1" >&2; exit 1; }
function error { echo "error: $1" >&2; exit 1; }
function usage {
function usage {
  [ "$1" ] && error "$1"
   cat <<EOF
   cat <<EOF
Usage: chrtsetup [OPTION] [CHRTCONF]
Usage: chrtsetup [OPTIONS] [CHRTCONF]
   -v, --verbose            print actions
   -v, --verbose            print actions
   -p, --prepare            perform mount sequence only
   -p, --prepare            perform mount sequence only
   -c, --clean              perform umount sequence only
   -c, --clean              perform umount sequence only
   -e, --enter              enter chroot only
   -e, --enter              enter chroot only
  -x DISPLAY              configures the xsession defined by DISPLAY
                          to allow all connections from localhost
                          (xhost +localhost) and sets the DISPLAY
                          variable inside the chroot accordingly to
                          support connecting X11 clients from inside the
                          chroot to your X11 server.
  -y DISPLAY              does the same like -x but additionally sets the
                          window manager name of the xsession to a
                          non-reparenting window manager (wmname LG3D) to
                          avoid problems with some jdk versions running
                          with awesome wm. (shouldn't interfere with
                          conventional use-cases :)
   -r, --run=COMMAND        run specified COMMAND after entering the chroot
   -r, --run=COMMAND        run specified COMMAND after entering the chroot


CHRTCONF is the name of the chroot configuration stored in /etc/chrtsetup/.
CHRTCONF is the name of the chroot configuration stored in /etc/chrtsetup/.
If neither -p, -c nor -e is set all actions are enabled.
If neither -p, -c nor -e is set -pce is assumed.


Examples:
Examples:
   chrtsetup ubuntu     # executed setup defined in /etc/chrtsetup/ubuntu, enter chroot and clean up after
   chrtsetup ubuntu                                     # executed setup defined in /etc/chrtsetup/ubuntu, enter chroot and clean up after
   chrtsetup -c ubuntu   # undo mounts performed to setup the chroot
   chrtsetup -c ubuntu                                   # undo mounts performed to setup the chroot
   chrtsetup -pe ubuntu # mount, enter but do not clean up after
   chrtsetup -pe ubuntu                                 # mount, enter but do not clean up after
  chrtsetup -x localhost:0.0 --run="xterm" ubuntu      # configure the xsession and start xterm inside the chroot
EOF
EOF


Zeile 94: Zeile 109:
   done
   done
}
}
function setupX {
    RUN="DISPLAY=$1 $RUN"
    export DISPLAY=$1
    xhost +localhost
    [ $Y ] && wmname LG3D
}
### main


[ $# -eq 0 ] && usage
[ $# -eq 0 ] && usage


eval set -- "`getopt -o vpecr --long verbose,prepare,enter,clean,run -n 'chrtsetup' -- \"$@\"`"
eval set -- "`getopt -o vpecr:x:y: --long verbose,prepare,enter,clean,run: -n 'chrtsetup' -- \"$@\"`"
while true ; do
while true ; do
         case "$1" in
         case "$1" in
Zeile 105: Zeile 129:
                 -c|--clean) CLEAN=0 ; shift ;;
                 -c|--clean) CLEAN=0 ; shift ;;
                 -r|--run) RUN="$2" ; shift 2;;
                 -r|--run) RUN="$2" ; shift 2;;
                -x|--x) X=0; DISPLAY="$2" ; shift 2;;
                -y|--y) Y=0; DISPLAY="$2" ; shift 2;;
                 --) shift ; break ;;
                 --) shift ; break ;;
         esac
         esac
Zeile 110: Zeile 136:
CONFIG=$1
CONFIG=$1


[ -z $CONFIG ] && usage
[ -z $CONFIG ] && usage "CONFIG is mandatory"
[ ! "$CLEAN" -a ! "$PREPARE" -a  ! "$ENTER" ] && CLEAN=set PREPARE=set ENTER=set
[ ! "$CLEAN" -a ! "$PREPARE" -a  ! "$ENTER" ] && CLEAN=set PREPARE=set ENTER=set


source "/etc/chrtsetup/$CONFIG"
source "/etc/chrtsetup/$CONFIG"
 
[ "$X" -o "$Y" ] && setupX $DISPLAY
[ $PREPARE ] && prepare
[ $PREPARE ] && prepare
[ $ENTER ]  && chroot "$CHROOT" "$RUN"
[ $ENTER ]  && chroot "$CHROOT" bash -c "$RUN"
[ $CLEAN ]  && clean
[ $CLEAN ]  && clean
</pre>
</pre>


== gstrtpcast ==
== gstrtpcast ==
Grab audio from a pulse monitor src and stream it via rtp. though pulseaudio is capable of streaming sound via rtp it is not able to compress the stream. additionally its command line tools are crap and its not nearly as flexible as gstreamer.
Grab audio from a pulse monitor src and stream it via rtp. though pulseaudio is capable of streaming sound via rtp it is not able to compress the stream. additionally its command line tools are crap and its not nearly as flexible as gstreamer.
 
You need to load the module for the alsa dummy device (snd_dummy) before running the script.


<pre>
<pre>
Zeile 171: Zeile 196:


[[Kategorie:CLI]]
[[Kategorie:CLI]]
[[Kategorie:Howto]]