mirror of https://github.com/captn3m0/Scripts.git
Initial commit
This commit is contained in:
commit
1c452ac2c1
|
@ -0,0 +1,928 @@
|
|||
#!/bin/bash
|
||||
|
||||
SCRIPT_VERSION=0.4.60
|
||||
CHANGELOG="http://www.alsa-project.org/alsa-info.sh.changelog"
|
||||
|
||||
#################################################################################
|
||||
#Copyright (C) 2007 Free Software Foundation.
|
||||
|
||||
#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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
##################################################################################
|
||||
|
||||
#The script was written for 2 main reasons:
|
||||
# 1. Remove the need for the devs/helpers to ask several questions before we can easily help the user.
|
||||
# 2. Allow newer/inexperienced ALSA users to give us all the info we need to help them.
|
||||
|
||||
#Set the locale (this may or may not be a good idea.. let me know)
|
||||
export LC_ALL=C
|
||||
|
||||
#Change the PATH variable, so we can run lspci (needed for some distros)
|
||||
PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin
|
||||
BGTITLE="ALSA-Info v $SCRIPT_VERSION"
|
||||
PASTEBINKEY="C9cRIO8m/9y8Cs0nVs0FraRx7U0pHsuc"
|
||||
#Define some simple functions
|
||||
|
||||
pbcheck(){
|
||||
[[ $UPLOAD = "no" ]] && return
|
||||
|
||||
if [[ -z $PASTEBIN ]]; then
|
||||
[[ $(ping -c1 www.alsa-project.org) ]] || KEEP_FILES="yes" UPLOAD="no" PBERROR="yes"
|
||||
else
|
||||
[[ $(ping -c1 www.pastebin.ca) ]] || KEEP_FILES="yes" UPLOAD="no" PBERROR="yes"
|
||||
fi
|
||||
}
|
||||
|
||||
update() {
|
||||
SHFILE=`mktemp -t alsa-info.XXXXXXXXXX` || exit 1
|
||||
wget -O $SHFILE "http://www.alsa-project.org/alsa-info.sh" >/dev/null 2>&1
|
||||
REMOTE_VERSION=`grep SCRIPT_VERSION $SHFILE |head -n1 |sed 's/.*=//'`
|
||||
if [ "$REMOTE_VERSION" != "$SCRIPT_VERSION" ]; then
|
||||
if [[ -n $DIALOG ]]
|
||||
then
|
||||
OVERWRITE=
|
||||
if [ -w $0 ]; then
|
||||
dialog --yesno "Newer version of ALSA-Info has been found\n\nDo you wish to install it?\nNOTICE: The original file $0 will be overwritten!" 0 0
|
||||
DIALOG_EXIT_CODE=$?
|
||||
if [[ $DIALOG_EXIT_CODE = 0 ]]; then
|
||||
OVERWRITE=yes
|
||||
fi
|
||||
fi
|
||||
if [ -z "$OVERWRITE" ]; then
|
||||
dialog --yesno "Newer version of ALSA-Info has been found\n\nDo you wish to download it?" 0 0
|
||||
DIALOG_EXIT_CODE=$?
|
||||
fi
|
||||
if [[ $DIALOG_EXIT_CODE = 0 ]]
|
||||
then
|
||||
echo "Newer version detected: $REMOTE_VERSION"
|
||||
echo "To view the ChangeLog, please visit $CHANGELOG"
|
||||
if [ "$OVERWRITE" = "yes" ]; then
|
||||
cp $SHFILE $0
|
||||
echo "ALSA-Info script has been updated to v $REMOTE_VERSION"
|
||||
echo "Please re-run the script"
|
||||
rm $SHFILE 2>/dev/null
|
||||
else
|
||||
echo "ALSA-Info script has been downloaded as $SHFILE."
|
||||
echo "Please re-run the script from new location."
|
||||
fi
|
||||
exit
|
||||
else
|
||||
rm $SHFILE 2>/dev/null
|
||||
fi
|
||||
else
|
||||
echo "Newer version detected: $REMOTE_VERSION"
|
||||
echo "To view the ChangeLog, please visit $CHANGELOG"
|
||||
if [ -w $0 ]; then
|
||||
echo "The original file $0 will be overwritten!"
|
||||
echo -n "If you do not like to proceed, press Ctrl-C now.." ; read inp
|
||||
cp $SHFILE $0
|
||||
echo "ALSA-Info script has been updated. Please re-run it."
|
||||
rm $SHFILE 2>/dev/null
|
||||
else
|
||||
echo "ALSA-Info script has been downloaded $SHFILE."
|
||||
echo "Please, re-run it from new location."
|
||||
fi
|
||||
exit
|
||||
fi
|
||||
else
|
||||
rm $SHFILE 2>/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
cleanup() {
|
||||
if [ -n "$TEMPDIR" -a "$KEEP_FILES" != "yes" ]; then
|
||||
rm -rf "$TEMPDIR" 2>/dev/null
|
||||
fi
|
||||
test -n "$KEEP_OUTPUT" || rm -f "$NFILE"
|
||||
}
|
||||
|
||||
|
||||
withaplay() {
|
||||
echo "!!Aplay/Arecord output" >> $FILE
|
||||
echo "!!------------" >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "APLAY" >> $FILE
|
||||
echo "" >> $FILE
|
||||
aplay -l >> $FILE 2>&1
|
||||
echo "" >> $FILE
|
||||
echo "ARECORD" >> $FILE
|
||||
echo "" >> $FILE
|
||||
arecord -l >> $FILE 2>&1
|
||||
echo "" >> $FILE
|
||||
}
|
||||
|
||||
withlsmod() {
|
||||
echo "!!All Loaded Modules" >> $FILE
|
||||
echo "!!------------------" >> $FILE
|
||||
echo "" >> $FILE
|
||||
lsmod |awk {'print $1'} >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "" >> $FILE
|
||||
}
|
||||
|
||||
withamixer() {
|
||||
echo "!!Amixer output" >> $FILE
|
||||
echo "!!-------------" >> $FILE
|
||||
echo "" >> $FILE
|
||||
for i in `grep "]: " /proc/asound/cards | awk -F ' ' '{ print $1} '` ; do
|
||||
CARD_NAME=`grep "^ *$i " $TEMPDIR/alsacards.tmp|awk {'print $2'}`
|
||||
echo "!!-------Mixer controls for card $i $CARD_NAME]" >> $FILE
|
||||
echo "" >>$FILE
|
||||
amixer -c$i info>> $FILE 2>&1
|
||||
amixer -c$i>> $FILE 2>&1
|
||||
echo "" >> $FILE
|
||||
done
|
||||
echo "" >> $FILE
|
||||
}
|
||||
|
||||
withalsactl() {
|
||||
echo "!!Alsactl output" >> $FILE
|
||||
echo "!!-------------" >> $FILE
|
||||
echo "" >> $FILE
|
||||
exe=""
|
||||
if [ -x /usr/sbin/alsactl ]; then
|
||||
exe="/usr/sbin/alsactl"
|
||||
fi
|
||||
if [ -x /usr/local/sbin/alsactl ]; then
|
||||
exe="/usr/local/sbin/alsactl"
|
||||
fi
|
||||
if [ -z "$exe" ]; then
|
||||
exe=`whereis alsactl | cut -d ' ' -f 2`
|
||||
fi
|
||||
$exe -f $TEMPDIR/alsactl.tmp store
|
||||
echo "--startcollapse--" >> $FILE
|
||||
cat $TEMPDIR/alsactl.tmp >> $FILE
|
||||
echo "--endcollapse--" >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "" >> $FILE
|
||||
}
|
||||
|
||||
withdevices() {
|
||||
echo "!!ALSA Device nodes" >> $FILE
|
||||
echo "!!-----------------" >> $FILE
|
||||
echo "" >> $FILE
|
||||
ls -la /dev/snd/* >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "" >> $FILE
|
||||
}
|
||||
|
||||
withconfigs() {
|
||||
if [[ -e $HOME/.asoundrc ]] || [[ -e /etc/asound.conf ]] || [[ -e $HOME/.asoundrc.asoundconf ]]
|
||||
then
|
||||
echo "!!ALSA configuration files" >> $FILE
|
||||
echo "!!------------------------" >> $FILE
|
||||
echo "" >> $FILE
|
||||
|
||||
#Check for ~/.asoundrc
|
||||
if [[ -e $HOME/.asoundrc ]]
|
||||
then
|
||||
echo "!!User specific config file (~/.asoundrc)" >> $FILE
|
||||
echo "" >> $FILE
|
||||
cat $HOME/.asoundrc >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "" >> $FILE
|
||||
fi
|
||||
#Check for .asoundrc.asoundconf (seems to be Ubuntu specific)
|
||||
if [[ -e $HOME/.asoundrc.asoundconf ]]
|
||||
then
|
||||
echo "!!asoundconf-generated config file" >> $FILE
|
||||
echo "" >> $FILE
|
||||
cat $HOME/.asoundrc.asoundconf >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "" >> $FILE
|
||||
fi
|
||||
#Check for /etc/asound.conf
|
||||
if [[ -e /etc/asound.conf ]]
|
||||
then
|
||||
echo "!!System wide config file (/etc/asound.conf)" >> $FILE
|
||||
echo "" >> $FILE
|
||||
cat /etc/asound.conf >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "" >> $FILE
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
withsysfs() {
|
||||
local i f
|
||||
local printed=""
|
||||
for i in /sys/class/sound/*; do
|
||||
case "$i" in
|
||||
*/hwC?D?)
|
||||
if [ -f $i/init_pin_configs ]; then
|
||||
if [ -z "$printed" ]; then
|
||||
echo "!!Sysfs Files" >> $FILE
|
||||
echo "!!-----------" >> $FILE
|
||||
echo "" >> $FILE
|
||||
fi
|
||||
for f in init_pin_configs driver_pin_configs user_pin_configs init_verbs; do
|
||||
echo "$i/$f:" >> $FILE
|
||||
cat $i/$f >> $FILE
|
||||
echo >> $FILE
|
||||
done
|
||||
printed=yes
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
if [ -n "$printed" ]; then
|
||||
echo "" >> $FILE
|
||||
fi
|
||||
}
|
||||
|
||||
withdmesg() {
|
||||
echo "!!ALSA/HDA dmesg" >> $FILE
|
||||
echo "!!------------------" >> $FILE
|
||||
echo "" >> $FILE
|
||||
dmesg | grep -C1 -E 'ALSA|HDA|HDMI|sound|hda.codec|hda.intel' >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "" >> $FILE
|
||||
}
|
||||
|
||||
withall() {
|
||||
withdevices
|
||||
withconfigs
|
||||
withaplay
|
||||
withamixer
|
||||
withalsactl
|
||||
withlsmod
|
||||
withsysfs
|
||||
withdmesg
|
||||
}
|
||||
|
||||
get_alsa_library_version() {
|
||||
ALSA_LIB_VERSION=`grep VERSION_STR /usr/include/alsa/version.h 2>/dev/null|awk {'print $3'}|sed 's/"//g'`
|
||||
|
||||
if [ -z "$ALSA_LIB_VERSION" ]; then
|
||||
if [ -f /etc/lsb-release ]; then
|
||||
. /etc/lsb-release
|
||||
case "$DISTRIB_ID" in
|
||||
Ubuntu)
|
||||
if which dpkg > /dev/null ; then
|
||||
ALSA_LIB_VERSION=`dpkg -l libasound2 | tail -1 | awk '{print $3}' | cut -f 1 -d -`
|
||||
fi
|
||||
|
||||
if [ "$ALSA_LIB_VERSION" = "<none>" ]; then
|
||||
ALSA_LIB_VERSION=""
|
||||
fi
|
||||
return
|
||||
;;
|
||||
*)
|
||||
return
|
||||
;;
|
||||
esac
|
||||
elif [ -f /etc/debian_version ]; then
|
||||
if which dpkg > /dev/null ; then
|
||||
ALSA_LIB_VERSION=`dpkg -l libasound2 | tail -1 | awk '{print $3}' | cut -f 1 -d -`
|
||||
fi
|
||||
|
||||
if [ "$ALSA_LIB_VERSION" = "<none>" ]; then
|
||||
ALSA_LIB_VERSION=""
|
||||
fi
|
||||
return
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
#Run checks to make sure the programs we need are installed.
|
||||
LSPCI=$(which lspci 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null);
|
||||
TPUT=$(which tput 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null);
|
||||
DIALOG=$(which dialog 2>/dev/null | sed 's|^[^/]*||' 2>/dev/null);
|
||||
|
||||
#Check to see if sysfs is enabled in the kernel. We'll need this later on
|
||||
SYSFS=$(mount |grep sysfs|awk {'print $3'});
|
||||
|
||||
#Check modprobe config files for sound related options
|
||||
SNDOPTIONS=$(modprobe -c|sed -n 's/^options \(snd[-_][^ ]*\)/\1:/p')
|
||||
|
||||
KEEP_OUTPUT=
|
||||
NFILE=""
|
||||
|
||||
PASTEBIN=""
|
||||
WWWSERVICE="www.alsa-project.org"
|
||||
WELCOME="yes"
|
||||
PROCEED="yes"
|
||||
UPLOAD="ask"
|
||||
REPEAT=""
|
||||
while [ -z "$REPEAT" ]; do
|
||||
REPEAT="no"
|
||||
case "$1" in
|
||||
--update|--help|--about)
|
||||
WELCOME="no"
|
||||
PROCEED="no"
|
||||
;;
|
||||
--upload)
|
||||
UPLOAD="yes"
|
||||
WELCOME="no"
|
||||
;;
|
||||
--no-upload)
|
||||
UPLOAD="no"
|
||||
WELCOME="no"
|
||||
;;
|
||||
--pastebin)
|
||||
PASTEBIN="yes"
|
||||
WWWSERVICE="pastebin"
|
||||
;;
|
||||
--no-dialog)
|
||||
DIALOG=""
|
||||
REPEAT=""
|
||||
shift
|
||||
;;
|
||||
--stdout)
|
||||
DIALOG=""
|
||||
UPLOAD="no"
|
||||
WELCOME="no"
|
||||
TOSTDOUT="yes"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
#Script header output.
|
||||
if [ "$WELCOME" = "yes" ]; then
|
||||
greeting_message="\
|
||||
|
||||
This script visits the following commands/files to collect diagnostic
|
||||
information about your ALSA installation and sound related hardware.
|
||||
|
||||
dmesg
|
||||
lspci
|
||||
lsmod
|
||||
aplay
|
||||
amixer
|
||||
alsactl
|
||||
/proc/asound/
|
||||
/sys/class/sound/
|
||||
~/.asoundrc (etc.)
|
||||
|
||||
See '$0 --help' for command line options.
|
||||
"
|
||||
if [[ -n "$DIALOG" ]]; then
|
||||
dialog --backtitle "$BGTITLE" \
|
||||
--title "ALSA-Info script v $SCRIPT_VERSION" \
|
||||
--msgbox "$greeting_message" 20 80
|
||||
else
|
||||
echo "ALSA Information Script v $SCRIPT_VERSION"
|
||||
echo "--------------------------------"
|
||||
echo "$greeting_message"
|
||||
fi # dialog
|
||||
fi # WELCOME
|
||||
|
||||
#Set the output file
|
||||
TEMPDIR=`mktemp -t -d alsa-info.XXXXXXXXXX` || exit 1
|
||||
FILE="$TEMPDIR/alsa-info.txt"
|
||||
if [ -z "$NFILE" ]; then
|
||||
NFILE=`mktemp -t alsa-info.txt.XXXXXXXXXX` || exit 1
|
||||
fi
|
||||
|
||||
trap cleanup 0
|
||||
|
||||
if [ "$PROCEED" = "yes" ]; then
|
||||
|
||||
if [[ -z "$LSPCI" ]]
|
||||
then
|
||||
echo "This script requires lspci. Please install it, and re-run this script."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
#Fetch the info and store in temp files/variables
|
||||
DISTRO=`grep -ihs "buntu\|SUSE\|Fedora\|PCLinuxOS\|MEPIS\|Mandriva\|Debian\|Damn\|Sabayon\|Slackware\|KNOPPIX\|Gentoo\|Zenwalk\|Mint\|Kubuntu\|FreeBSD\|Puppy\|Freespire\|Vector\|Dreamlinux\|CentOS\|Arch\|Xandros\|Elive\|SLAX\|Red\|BSD\|KANOTIX\|Nexenta\|Foresight\|GeeXboX\|Frugalware\|64\|SystemRescue\|Novell\|Solaris\|BackTrack\|KateOS\|Pardus" /etc/{issue,*release,*version}`
|
||||
KERNEL_VERSION=`uname -r`
|
||||
KERNEL_PROCESSOR=`uname -p`
|
||||
KERNEL_MACHINE=`uname -m`
|
||||
KERNEL_OS=`uname -o`
|
||||
[[ `uname -v |grep SMP` ]] && KERNEL_SMP="Yes" || KERNEL_SMP="No"
|
||||
ALSA_DRIVER_VERSION=`cat /proc/asound/version |head -n1|awk {'print $7'} |sed 's/\.$//'`
|
||||
get_alsa_library_version
|
||||
ALSA_UTILS_VERSION=`amixer -v |awk {'print $3'}`
|
||||
VENDOR_ID=`lspci -vn |grep 040[1-3] | awk -F':' '{print $3}'|awk {'print substr($0, 2);}' >$TEMPDIR/vendor_id.tmp`
|
||||
DEVICE_ID=`lspci -vn |grep 040[1-3] | awk -F':' '{print $4}'|awk {'print $1'} >$TEMPDIR/device_id.tmp`
|
||||
LAST_CARD=$((`grep "]: " /proc/asound/cards | wc -l` - 1 ))
|
||||
|
||||
ESDINST=$(which esd 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
|
||||
PAINST=$(which pulseaudio 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
|
||||
ARTSINST=$(which artsd 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
|
||||
JACKINST=$(which jackd 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
|
||||
DMIDECODE=$(which dmidecode 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
|
||||
|
||||
#Check for DMI data
|
||||
if [ -d /sys/class/dmi/id ]; then
|
||||
# No root privileges are required when using sysfs method
|
||||
DMI_SYSTEM_MANUFACTURER=$(cat /sys/class/dmi/id/sys_vendor 2>/dev/null)
|
||||
DMI_SYSTEM_PRODUCT_NAME=$(cat /sys/class/dmi/id/product_name 2>/dev/null)
|
||||
DMI_SYSTEM_PRODUCT_VERSION=$(cat /sys/class/dmi/id/product_version 2>/dev/null)
|
||||
elif [ -x $DMIDECODE ]; then
|
||||
DMI_SYSTEM_MANUFACTURER=$($DMIDECODE -s system-manufacturer 2>/dev/null)
|
||||
DMI_SYSTEM_PRODUCT_NAME=$($DMIDECODE -s system-product-name 2>/dev/null)
|
||||
DMI_SYSTEM_PRODUCT_VERSION=$($DMIDECODE -s system-version 2>/dev/null)
|
||||
fi
|
||||
|
||||
cat /proc/asound/modules 2>/dev/null|awk {'print $2'}>$TEMPDIR/alsamodules.tmp
|
||||
cat /proc/asound/cards >$TEMPDIR/alsacards.tmp
|
||||
lspci |grep -i "multi\|audio">$TEMPDIR/lspci.tmp
|
||||
|
||||
#Check for HDA-Intel cards codec#*
|
||||
cat /proc/asound/card*/codec\#* > $TEMPDIR/alsa-hda-intel.tmp 2> /dev/null
|
||||
|
||||
#Check for AC97 cards codec
|
||||
cat /proc/asound/card*/codec97\#0/ac97\#0-0 > $TEMPDIR/alsa-ac97.tmp 2> /dev/null
|
||||
cat /proc/asound/card*/codec97\#0/ac97\#0-0+regs > $TEMPDIR/alsa-ac97-regs.tmp 2> /dev/null
|
||||
|
||||
#Check for USB mixer setup
|
||||
cat /proc/asound/card*/usbmixer > $TEMPDIR/alsa-usbmixer.tmp 2> /dev/null
|
||||
|
||||
#Fetch the info, and put it in $FILE in a nice readable format.
|
||||
if [[ -z $PASTEBIN ]]; then
|
||||
echo "upload=true&script=true&cardinfo=" > $FILE
|
||||
else
|
||||
echo "name=$USER&type=33&description=/tmp/alsa-info.txt&expiry=&s=Submit+Post&content=" > $FILE
|
||||
fi
|
||||
echo "!!################################" >> $FILE
|
||||
echo "!!ALSA Information Script v $SCRIPT_VERSION" >> $FILE
|
||||
echo "!!################################" >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "!!Script ran on: `LANG=C TZ=UTC date`" >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "!!Linux Distribution" >> $FILE
|
||||
echo "!!------------------" >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo $DISTRO >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "!!DMI Information" >> $FILE
|
||||
echo "!!---------------" >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "Manufacturer: $DMI_SYSTEM_MANUFACTURER" >> $FILE
|
||||
echo "Product Name: $DMI_SYSTEM_PRODUCT_NAME" >> $FILE
|
||||
echo "Product Version: $DMI_SYSTEM_PRODUCT_VERSION" >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "!!Kernel Information" >> $FILE
|
||||
echo "!!------------------" >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "Kernel release: $KERNEL_VERSION" >> $FILE
|
||||
echo "Operating System: $KERNEL_OS" >> $FILE
|
||||
echo "Architecture: $KERNEL_MACHINE" >> $FILE
|
||||
echo "Processor: $KERNEL_PROCESSOR" >> $FILE
|
||||
echo "SMP Enabled: $KERNEL_SMP" >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "!!ALSA Version" >> $FILE
|
||||
echo "!!------------" >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "Driver version: $ALSA_DRIVER_VERSION" >> $FILE
|
||||
echo "Library version: $ALSA_LIB_VERSION" >> $FILE
|
||||
echo "Utilities version: $ALSA_UTILS_VERSION" >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "!!Loaded ALSA modules" >> $FILE
|
||||
echo "!!-------------------" >> $FILE
|
||||
echo "" >> $FILE
|
||||
cat $TEMPDIR/alsamodules.tmp >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "!!Sound Servers on this system" >> $FILE
|
||||
echo "!!----------------------------" >> $FILE
|
||||
echo "" >> $FILE
|
||||
if [[ -n $PAINST ]];then
|
||||
[[ `pgrep '^(.*/)?pulseaudio$'` ]] && PARUNNING="Yes" || PARUNNING="No"
|
||||
echo "Pulseaudio:" >> $FILE
|
||||
echo " Installed - Yes ($PAINST)" >> $FILE
|
||||
echo " Running - $PARUNNING" >> $FILE
|
||||
echo "" >> $FILE
|
||||
fi
|
||||
if [[ -n $ESDINST ]];then
|
||||
[[ `pgrep '^(.*/)?esd$'` ]] && ESDRUNNING="Yes" || ESDRUNNING="No"
|
||||
echo "ESound Daemon:" >> $FILE
|
||||
echo " Installed - Yes ($ESDINST)" >> $FILE
|
||||
echo " Running - $ESDRUNNING" >> $FILE
|
||||
echo "" >> $FILE
|
||||
fi
|
||||
if [[ -n $ARTSINST ]];then
|
||||
[[ `pgrep '^(.*/)?artsd$'` ]] && ARTSRUNNING="Yes" || ARTSRUNNING="No"
|
||||
echo "aRts:" >> $FILE
|
||||
echo " Installed - Yes ($ARTSINST)" >> $FILE
|
||||
echo " Running - $ARTSRUNNING" >> $FILE
|
||||
echo "" >> $FILE
|
||||
fi
|
||||
if [[ -n $JACKINST ]];then
|
||||
[[ `pgrep '^(.*/)?jackd$'` ]] && JACKRUNNING="Yes" || JACKRUNNING="No"
|
||||
echo "Jack:" >> $FILE
|
||||
echo " Installed - Yes ($JACKINST)" >> $FILE
|
||||
echo " Running - $JACKRUNNING" >> $FILE
|
||||
echo "" >> $FILE
|
||||
fi
|
||||
if [[ -z "$PAINST" && -z "$ESDINST" && -z "$ARTSINST" && -z "$JACKINST" ]];then
|
||||
echo "No sound servers found." >> $FILE
|
||||
echo "" >> $FILE
|
||||
fi
|
||||
echo "" >> $FILE
|
||||
echo "!!Soundcards recognised by ALSA" >> $FILE
|
||||
echo "!!-----------------------------" >> $FILE
|
||||
echo "" >> $FILE
|
||||
cat $TEMPDIR/alsacards.tmp >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "!!PCI Soundcards installed in the system" >> $FILE
|
||||
echo "!!--------------------------------------" >> $FILE
|
||||
echo "" >> $FILE
|
||||
cat $TEMPDIR/lspci.tmp >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "!!Advanced information - PCI Vendor/Device/Subsystem ID's" >> $FILE
|
||||
echo "!!--------------------------------------------------------" >> $FILE
|
||||
echo "" >> $FILE
|
||||
lspci -vvn |grep -A1 040[1-3] >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "" >> $FILE
|
||||
|
||||
if [ "$SNDOPTIONS" ]
|
||||
then
|
||||
echo "!!Modprobe options (Sound related)" >> $FILE
|
||||
echo "!!--------------------------------" >> $FILE
|
||||
echo "" >> $FILE
|
||||
modprobe -c|sed -n 's/^options \(snd[-_][^ ]*\)/\1:/p' >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "" >> $FILE
|
||||
fi
|
||||
|
||||
if [ -d "$SYSFS" ]
|
||||
then
|
||||
echo "!!Loaded sound module options" >> $FILE
|
||||
echo "!!--------------------------" >> $FILE
|
||||
echo "" >> $FILE
|
||||
for mod in `cat /proc/asound/modules|awk {'print $2'}`;do
|
||||
echo "!!Module: $mod" >> $FILE
|
||||
for params in `echo $SYSFS/module/$mod/parameters/*`; do
|
||||
echo -ne "\t";
|
||||
echo "$params : `cat $params`" | sed 's:.*/::';
|
||||
done >> $FILE
|
||||
echo "" >> $FILE
|
||||
done
|
||||
echo "" >> $FILE
|
||||
fi
|
||||
|
||||
if [ -s "$TEMPDIR/alsa-hda-intel.tmp" ]
|
||||
then
|
||||
echo "!!HDA-Intel Codec information" >> $FILE
|
||||
echo "!!---------------------------" >> $FILE
|
||||
echo "--startcollapse--" >> $FILE
|
||||
echo "" >> $FILE
|
||||
cat $TEMPDIR/alsa-hda-intel.tmp >> $FILE
|
||||
echo "--endcollapse--" >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "" >> $FILE
|
||||
fi
|
||||
|
||||
if [ -s "$TEMPDIR/alsa-ac97.tmp" ]
|
||||
then
|
||||
echo "!!AC97 Codec information" >> $FILE
|
||||
echo "!!---------------------------" >> $FILE
|
||||
echo "--startcollapse--" >> $FILE
|
||||
echo "" >> $FILE
|
||||
cat $TEMPDIR/alsa-ac97.tmp >> $FILE
|
||||
echo "" >> $FILE
|
||||
cat $TEMPDIR/alsa-ac97-regs.tmp >> $FILE
|
||||
echo "--endcollapse--" >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "" >> $FILE
|
||||
fi
|
||||
|
||||
if [ -s "$TEMPDIR/alsa-usbmixer.tmp" ]
|
||||
then
|
||||
echo "!!USB Mixer information" >> $FILE
|
||||
echo "!!---------------------------" >> $FILE
|
||||
echo "--startcollapse--" >> $FILE
|
||||
echo "" >> $FILE
|
||||
cat $TEMPDIR/alsa-usbmixer.tmp >> $FILE
|
||||
echo "--endcollapse--" >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "" >> $FILE
|
||||
fi
|
||||
|
||||
#If no command line options are specified, then run as though --with-all was specified
|
||||
if [[ -z "$1" ]]
|
||||
then
|
||||
update
|
||||
withall
|
||||
pbcheck
|
||||
fi
|
||||
|
||||
fi # proceed
|
||||
|
||||
#loop through command line arguments, until none are left.
|
||||
if [[ -n "$1" ]]
|
||||
then
|
||||
until [ -z "$1" ]
|
||||
do
|
||||
case "$1" in
|
||||
--pastebin)
|
||||
update
|
||||
withall
|
||||
pbcheck
|
||||
;;
|
||||
--update)
|
||||
update
|
||||
exit
|
||||
;;
|
||||
--upload)
|
||||
UPLOAD="yes"
|
||||
withall
|
||||
;;
|
||||
--no-upload)
|
||||
UPLOAD="no"
|
||||
withall
|
||||
;;
|
||||
--output)
|
||||
shift
|
||||
NFILE="$1"
|
||||
KEEP_OUTPUT="yes"
|
||||
;;
|
||||
--debug)
|
||||
echo "Debugging enabled. $FILE and $TEMPDIR will not be deleted"
|
||||
KEEP_FILES="yes"
|
||||
echo ""
|
||||
withall
|
||||
;;
|
||||
--with-all)
|
||||
withall
|
||||
;;
|
||||
--with-aplay)
|
||||
withaplay
|
||||
;;
|
||||
--with-amixer)
|
||||
withamixer
|
||||
;;
|
||||
--with-alsactl)
|
||||
withalsactl
|
||||
;;
|
||||
--with-devices)
|
||||
withdevices
|
||||
;;
|
||||
--with-dmesg)
|
||||
withdmesg
|
||||
;;
|
||||
--with-configs)
|
||||
if [[ -e $HOME/.asoundrc ]] || [[ -e /etc/asound.conf ]]
|
||||
then
|
||||
echo "!!ALSA configuration files" >> $FILE
|
||||
echo "!!------------------------" >> $FILE
|
||||
echo "" >> $FILE
|
||||
|
||||
#Check for ~/.asoundrc
|
||||
if [[ -e $HOME/.asoundrc ]]
|
||||
then
|
||||
echo "!!User specific config file ($HOME/.asoundrc)" >> $FILE
|
||||
echo "" >> $FILE
|
||||
cat $HOME/.asoundrc >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "" >> $FILE
|
||||
fi
|
||||
|
||||
#Check for /etc/asound.conf
|
||||
if [[ -e /etc/asound.conf ]]
|
||||
then
|
||||
echo "!!System wide config file (/etc/asound.conf)" >> $FILE
|
||||
echo "" >> $FILE
|
||||
cat /etc/asound.conf >> $FILE
|
||||
echo "" >> $FILE
|
||||
echo "" >> $FILE
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
--stdout)
|
||||
UPLOAD="no"
|
||||
withall
|
||||
cat $FILE
|
||||
rm $FILE
|
||||
;;
|
||||
--about)
|
||||
echo "Written/Tested by the following users of #alsa on irc.freenode.net:"
|
||||
echo ""
|
||||
echo " wishie - Script author and developer / Testing"
|
||||
echo " crimsun - Various script ideas / Testing"
|
||||
echo " gnubien - Various script ideas / Testing"
|
||||
echo " GrueMaster - HDA Intel specific items / Testing"
|
||||
echo " olegfink - Script update function"
|
||||
echo " TheMuso - display to stdout functionality"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "alsa-info.sh version $SCRIPT_VERSION"
|
||||
echo ""
|
||||
echo "Available options:"
|
||||
echo " --with-aplay (includes the output of aplay -l)"
|
||||
echo " --with-amixer (includes the output of amixer)"
|
||||
echo " --with-alsactl (includes the output of alsactl)"
|
||||
echo " --with-configs (includes the output of ~/.asoundrc and"
|
||||
echo " /etc/asound.conf if they exist)"
|
||||
echo " --with-devices (shows the device nodes in /dev/snd/)"
|
||||
echo " --with-dmesg (shows the ALSA/HDA kernel messages)"
|
||||
echo ""
|
||||
echo " --output FILE (specify the file to output for no-upload mode)"
|
||||
echo " --update (check server for script updates)"
|
||||
echo " --upload (upload contents to remote server)"
|
||||
echo " --no-upload (do not upload contents to remote server)"
|
||||
echo " --pastebin (use http://pastebin.ca) as remote server"
|
||||
echo " instead www.alsa-project.org"
|
||||
echo " --stdout (print alsa information to standard output"
|
||||
echo " instead of a file)"
|
||||
echo " --about (show some information about the script)"
|
||||
echo " --debug (will run the script as normal, but will not"
|
||||
echo " delete $FILE)"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
shift 1
|
||||
done
|
||||
fi
|
||||
|
||||
if [ "$PROCEED" = "no" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$UPLOAD" = "ask" ]; then
|
||||
if [[ -n "$DIALOG" ]]; then
|
||||
dialog --backtitle "$BGTITLE" --title "Information collected" --yes-label " UPLOAD / SHARE " --no-label " SAVE LOCALLY " --defaultno --yesno "\n\nAutomatically upload ALSA information to $WWWSERVICE?" 10 80
|
||||
DIALOG_EXIT_CODE=$?
|
||||
if [ $DIALOG_EXIT_CODE != 0 ]; then
|
||||
UPLOAD="no"
|
||||
else
|
||||
UPLOAD="yes"
|
||||
fi
|
||||
else
|
||||
echo -n "Automatically upload ALSA information to $WWWSERVICE? [y/N] : "
|
||||
read -e CONFIRM
|
||||
if [ "$CONFIRM" != "y" ]; then
|
||||
UPLOAD="no"
|
||||
else
|
||||
UPLOAD="yes"
|
||||
fi
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
if [ "$UPLOAD" = "no" ]; then
|
||||
|
||||
if [ -z "$TOSTDOUT" ]; then
|
||||
mv -f $FILE $NFILE || exit 1
|
||||
KEEP_OUTPUT="yes"
|
||||
fi
|
||||
|
||||
if [[ -n $DIALOG ]]
|
||||
then
|
||||
if [[ -n $PBERROR ]]; then
|
||||
dialog --backtitle "$BGTITLE" --title "Information collected" --msgbox "An error occurred while contacting the $WWWSERVICE.\n Your information was NOT automatically uploaded.\n\nYour ALSA information is in $NFILE" 10 100
|
||||
else
|
||||
dialog --backtitle "$BGTITLE" --title "Information collected" --msgbox "\n\nYour ALSA information is in $NFILE" 10 60
|
||||
fi
|
||||
else
|
||||
echo
|
||||
|
||||
if [[ -n $PBERROR ]]; then
|
||||
echo "An error occurred while contacting the $WWWSERVICE."
|
||||
echo "Your information was NOT automatically uploaded."
|
||||
echo ""
|
||||
echo "Your ALSA information is in $NFILE"
|
||||
echo ""
|
||||
else
|
||||
if [ -z "$TOSTDOUT" ]; then
|
||||
echo ""
|
||||
echo "Your ALSA information is in $NFILE"
|
||||
echo ""
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
exit
|
||||
|
||||
fi # UPLOAD
|
||||
|
||||
#Test that wget is installed, and supports --post-file. Upload $FILE if it does, and prompt user to upload file if it doesnt.
|
||||
if
|
||||
WGET=$(which wget 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null); [[ -n "${WGET}" ]] && [[ -x "${WGET}" ]] && [[ `wget --help |grep post-file` ]]
|
||||
then
|
||||
|
||||
if [[ -n $DIALOG ]]
|
||||
then
|
||||
|
||||
if [[ -z $PASTEBIN ]]; then
|
||||
wget -O - --tries=5 --timeout=60 --post-file=$FILE "http://www.alsa-project.org/cardinfo-db/" &>$TEMPDIR/wget.tmp || echo "Upload failed; exit"
|
||||
{ for i in 10 20 30 40 50 60 70 80 90; do
|
||||
echo $i
|
||||
sleep 0.2
|
||||
done
|
||||
echo; } |dialog --backtitle "$BGTITLE" --guage "Uploading information to www.alsa-project.org ..." 6 70 0
|
||||
else
|
||||
wget -O - --tries=5 --timeout=60 --post-file=$FILE "http://pastebin.ca/quiet-paste.php?api=$PASTEBINKEY&encrypt=t&encryptpw=blahblah" &>$TEMPDIR/wget.tmp || echo "Upload failed; exit"
|
||||
{ for i in 10 20 30 40 50 60 70 80 90; do
|
||||
echo $i
|
||||
sleep 0.2
|
||||
done
|
||||
echo; } |dialog --backtitle "$BGTITLE" --guage "Uploading information to www.pastebin.ca ..." 6 70 0
|
||||
fi
|
||||
|
||||
dialog --backtitle "$BGTITLE" --title "Information uploaded" --yesno "Would you like to see the uploaded information?" 5 100
|
||||
DIALOG_EXIT_CODE=$?
|
||||
if [ $DIALOG_EXIT_CODE = 0 ]; then
|
||||
grep -v "alsa-info.txt" $FILE >$TEMPDIR/uploaded.txt
|
||||
dialog --backtitle "$BGTITLE" --textbox $TEMPDIR/uploaded.txt 0 0
|
||||
fi
|
||||
|
||||
clear
|
||||
|
||||
# no dialog
|
||||
else
|
||||
|
||||
if [[ -z $PASTEBIN ]]; then
|
||||
echo -n "Uploading information to www.alsa-project.org ... "
|
||||
wget -O - --tries=5 --timeout=60 --post-file=$FILE http://www.alsa-project.org/cardinfo-db/ &>$TEMPDIR/wget.tmp &
|
||||
else
|
||||
echo -n "Uploading information to www.pastebin.ca ... "
|
||||
wget -O - --tries=5 --timeout=60 --post-file=$FILE http://pastebin.ca/quiet-paste.php?api=$PASTEBINKEY &>$TEMPDIR/wget.tmp &
|
||||
fi
|
||||
|
||||
#Progess spinner for wget transfer.
|
||||
i=1
|
||||
sp="/-\|"
|
||||
echo -n ' '
|
||||
while pgrep wget &>/dev/null
|
||||
do
|
||||
echo -en "\b${sp:i++%${#sp}:1}"
|
||||
done
|
||||
|
||||
echo -e "\b Done!"
|
||||
echo ""
|
||||
|
||||
fi #dialog
|
||||
|
||||
#See if tput is available, and use it if it is.
|
||||
if [[ -n "$TPUT" ]]
|
||||
then
|
||||
if [[ -z $PASTEBIN ]]; then
|
||||
FINAL_URL=`tput setaf 1; grep "SUCCESS:" $TEMPDIR/wget.tmp | cut -d ' ' -f 2 ; tput sgr0`
|
||||
else
|
||||
FINAL_URL=`tput setaf 1; grep "SUCCESS:" $TEMPDIR/wget.tmp |sed -n 's/.*\:\([0-9]\+\).*/http:\/\/pastebin.ca\/\1/p';tput sgr0`
|
||||
fi
|
||||
else
|
||||
if [[ -z $PASTEBIN ]]; then
|
||||
FINAL_URL=`grep "SUCCESS:" $TEMPDIR/wget.tmp | cut -d ' ' -f 2`
|
||||
else
|
||||
FINAL_URL=`grep "SUCCESS:" $TEMPDIR/wget.tmp |sed -n 's/.*\:\([0-9]\+\).*/http:\/\/pastebin.ca\/\1/p'`
|
||||
fi
|
||||
fi
|
||||
|
||||
#Output the URL of the uploaded file.
|
||||
echo "Your ALSA information is located at $FINAL_URL"
|
||||
echo "Please inform the person helping you."
|
||||
echo ""
|
||||
|
||||
#We couldnt find a suitable wget, so tell the user to upload manually.
|
||||
else
|
||||
mv -f $FILE $NFILE || exit 1
|
||||
KEEP_OUTPUT="yes"
|
||||
if [[ -z $DIALOG ]]
|
||||
then
|
||||
if [[ -z $PASTEBIN ]]; then
|
||||
echo ""
|
||||
echo "Could not automatically upload output to http://www.alsa-project.org"
|
||||
echo "Possible reasons are:"
|
||||
echo " 1. Couldnt find 'wget' in your PATH"
|
||||
echo " 2. Your version of wget is less than 1.8.2"
|
||||
echo ""
|
||||
echo "Please manually upload $NFILE to http://www.alsa-project.org/cardinfo-db/ and submit your post."
|
||||
echo ""
|
||||
else
|
||||
echo ""
|
||||
echo "Could not automatically upload output to http://www.pastebin.ca"
|
||||
echo "Possible reasons are:"
|
||||
echo " 1. Couldnt find 'wget' in your PATH"
|
||||
echo " 2. Your version of wget is less than 1.8.2"
|
||||
echo ""
|
||||
echo "Please manually upload $NFILE to http://www.pastebin.ca/upload.php and submit your post."
|
||||
echo ""
|
||||
fi
|
||||
else
|
||||
if [[ -z $PASTEBIN ]]; then
|
||||
dialog --backtitle "$BGTITLE" --msgbox "Could not automatically upload output to http://www.alsa-project.org.\nPossible reasons are:\n\n 1. Couldn't find 'wget' in your PATH\n 2. Your version of wget is less than 1.8.2\n\nPlease manually upload $NFILE to http://www.alsa-project,org/cardinfo-db/ and submit your post." 25 100
|
||||
else
|
||||
dialog --backtitle "$BGTITLE" --msgbox "Could not automatically upload output to http://www.pastebin.ca.\nPossible reasons are:\n\n 1. Couldn't find 'wget' in your PATH\n 2. Your version of wget is less than 1.8.2\n\nPlease manually upload $NFILE to http://www.pastebin.ca/upload.php and submit your post." 25 100
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
@ -0,0 +1,331 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Convert ANSI (terminal) colours and attributes to HTML
|
||||
|
||||
# Author:
|
||||
# http://www.pixelbeat.org/docs/terminal_colours/
|
||||
# Examples:
|
||||
# ls -l --color=always | ansi2html.sh > ls.html
|
||||
# git show --color | ansi2html.sh > last_change.html
|
||||
# Generally one can use the `script` util to capture full terminal output.
|
||||
# Changes:
|
||||
# V0.1, 24 Apr 2008, Initial release
|
||||
# V0.2, 01 Jan 2009, Phil Harnish <philharnish@gmail.com>
|
||||
# Support `git diff --color` output by
|
||||
# matching ANSI codes that specify only
|
||||
# bold or background colour.
|
||||
# P@draigBrady.com
|
||||
# Support `ls --color` output by stripping
|
||||
# redundant leading 0s from ANSI codes.
|
||||
# Support `grep --color=always` by stripping
|
||||
# unhandled ANSI codes (specifically ^[[K).
|
||||
# V0.3, 20 Mar 2009, http://eexpress.blog.ubuntu.org.cn/
|
||||
# Remove cat -v usage which mangled non ascii input.
|
||||
# Cleanup regular expressions used.
|
||||
# Support other attributes like reverse, ...
|
||||
# P@draigBrady.com
|
||||
# Correctly nest <span> tags (even across lines).
|
||||
# Add a command line option to use a dark background.
|
||||
# Strip more terminal control codes.
|
||||
# V0.4, 17 Sep 2009, P@draigBrady.com
|
||||
# Handle codes with combined attributes and color.
|
||||
# Handle isolated <bold> attributes with css.
|
||||
# Strip more terminal control codes.
|
||||
# V0.12, 12 Jul 2011
|
||||
# http://github.com/pixelb/scripts/commits/master/scripts/ansi2html.sh
|
||||
|
||||
if [ "$1" = "--version" ]; then
|
||||
echo "0.12" && exit
|
||||
fi
|
||||
|
||||
if [ "$1" = "--help" ]; then
|
||||
echo "This utility converts ANSI codes in data passed to stdin" >&2
|
||||
echo "It has 2 optional parameters:" >&2
|
||||
echo " --bg=dark --palette=linux|solarized|tango|xterm" >&2
|
||||
echo "E.g.: ls -l --color=always | ansi2html.sh --bg=dark > ls.html" >&2
|
||||
exit
|
||||
fi
|
||||
|
||||
[ "$1" = "--bg=dark" ] && { dark_bg=yes; shift; }
|
||||
|
||||
if [ "$1" = "--palette=solarized" ]; then
|
||||
# See http://ethanschoonover.com/solarized
|
||||
P0=073642; P1=D30102; P2=859900; P3=B58900;
|
||||
P4=268BD2; P5=D33682; P6=2AA198; P7=EEE8D5;
|
||||
P8=002B36; P9=CB4B16; P10=586E75; P11=657B83;
|
||||
P12=839496; P13=6C71C4; P14=93A1A1; P15=FDF6E3;
|
||||
shift;
|
||||
elif [ "$1" = "--palette=solarized-xterm" ]; then
|
||||
# Above mapped onto the xterm 256 color palette
|
||||
P0=262626; P1=AF0000; P2=5F8700; P3=AF8700;
|
||||
P4=0087FF; P5=AF005F; P6=00AFAF; P7=E4E4E4;
|
||||
P8=1C1C1C; P9=D75F00; P10=585858; P11=626262;
|
||||
P12=808080; P13=5F5FAF; P14=8A8A8A; P15=FFFFD7;
|
||||
shift;
|
||||
elif [ "$1" = "--palette=tango" ]; then
|
||||
# Gnome default
|
||||
P0=000000; P1=CC0000; P2=4E9A06; P3=C4A000;
|
||||
P4=3465A4; P5=75507B; P6=06989A; P7=D3D7CF;
|
||||
P8=555753; P9=EF2929; P10=8AE234; P11=FCE94F;
|
||||
P12=729FCF; P13=AD7FA8; P14=34E2E2; P15=EEEEEC;
|
||||
shift;
|
||||
elif [ "$1" = "--palette=xterm" ]; then
|
||||
P0=000000; P1=CD0000; P2=00CD00; P3=CDCD00;
|
||||
P4=0000EE; P5=CD00CD; P6=00CDCD; P7=E5E5E5;
|
||||
P8=7F7F7F; P9=FF0000; P10=00FF00; P11=FFFF00;
|
||||
P12=5C5CFF; P13=FF00FF; P14=00FFFF; P15=FFFFFF;
|
||||
shift;
|
||||
else # linux console
|
||||
P0=000000; P1=AA0000; P2=00AA00; P3=AA5500;
|
||||
P4=0000AA; P5=AA00AA; P6=00AAAA; P7=AAAAAA;
|
||||
P8=555555; P9=FF5555; P10=55FF55; P11=FFFF55;
|
||||
P12=5555FF; P13=FF55FF; P14=55FFFF; P15=FFFFFF;
|
||||
[ "$1" = "--palette=linux" ] && shift
|
||||
fi
|
||||
|
||||
[ "$1" = "--bg=dark" ] && { dark_bg=yes; shift; }
|
||||
|
||||
echo -n "<html>
|
||||
<head>
|
||||
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>
|
||||
<style type=\"text/css\">
|
||||
.ef0,.f0 { color: #$P0; } .eb0,.b0 { background-color: #$P0; }
|
||||
.ef1,.f1 { color: #$P1; } .eb1,.b1 { background-color: #$P1; }
|
||||
.ef2,.f2 { color: #$P2; } .eb2,.b2 { background-color: #$P2; }
|
||||
.ef3,.f3 { color: #$P3; } .eb3,.b3 { background-color: #$P3; }
|
||||
.ef4,.f4 { color: #$P4; } .eb4,.b4 { background-color: #$P4; }
|
||||
.ef5,.f5 { color: #$P5; } .eb5,.b5 { background-color: #$P5; }
|
||||
.ef6,.f6 { color: #$P6; } .eb6,.b6 { background-color: #$P6; }
|
||||
.ef7,.f7 { color: #$P7; } .eb7,.b7 { background-color: #$P7; }
|
||||
.ef8, .f0 > .bold,.bold > .f0 { color: #$P8; font-weight: normal; }
|
||||
.ef9, .f1 > .bold,.bold > .f1 { color: #$P9; font-weight: normal; }
|
||||
.ef10,.f2 > .bold,.bold > .f2 { color: #$P10; font-weight: normal; }
|
||||
.ef11,.f3 > .bold,.bold > .f3 { color: #$P11; font-weight: normal; }
|
||||
.ef12,.f4 > .bold,.bold > .f4 { color: #$P12; font-weight: normal; }
|
||||
.ef13,.f5 > .bold,.bold > .f5 { color: #$P13; font-weight: normal; }
|
||||
.ef14,.f6 > .bold,.bold > .f6 { color: #$P14; font-weight: normal; }
|
||||
.ef15,.f7 > .bold,.bold > .f7 { color: #$P15; font-weight: normal; }
|
||||
.eb8 { background-color: #$P8; }
|
||||
.eb9 { background-color: #$P9; }
|
||||
.eb10 { background-color: #$P10; }
|
||||
.eb11 { background-color: #$P11; }
|
||||
.eb12 { background-color: #$P12; }
|
||||
.eb13 { background-color: #$P13; }
|
||||
.eb14 { background-color: #$P14; }
|
||||
.eb15 { background-color: #$P15; }
|
||||
"
|
||||
|
||||
# The default xterm 256 colour palette
|
||||
for red in $(seq 0 5); do
|
||||
for green in $(seq 0 5); do
|
||||
for blue in $(seq 0 5); do
|
||||
c=$((16 + ($red * 36) + ($green * 6) + $blue))
|
||||
r=$((($red * 40 + 55) * ($red > 0)))
|
||||
g=$((($green * 40 + 55) * ($green > 0)))
|
||||
b=$((($blue * 40 + 55) * ($blue > 0)))
|
||||
printf ".ef%d { color: #%2.2x%2.2x%2.2x; } " $c $r $g $b
|
||||
printf ".eb%d { background-color: #%2.2x%2.2x%2.2x; }\n" $c $r $g $b
|
||||
done
|
||||
done
|
||||
done
|
||||
for gray in $(seq 0 23); do
|
||||
c=$(($gray+232))
|
||||
l=$(($gray*10 + 8))
|
||||
printf ".ef%d { color: #%2.2x%2.2x%2.2x; } " $c $l $l $l
|
||||
printf ".eb%d { background-color: #%2.2x%2.2x%2.2x; }\n" $c $l $l $l
|
||||
done
|
||||
|
||||
echo -n '
|
||||
.f9 { color: '`[ "$dark_bg" ] && echo "#$P7;" || echo "#$P0;"`' }
|
||||
.b9 { background-color: #'`[ "$dark_bg" ] && echo $P0 || echo $P15`'; }
|
||||
.f9 > .bold,.bold > .f9, body.f9 > pre > .bold {
|
||||
/* Bold is heavy black on white, or bright white
|
||||
depending on the default background */
|
||||
color: '`[ "$dark_bg" ] && echo "#$P15;" || echo "#$P0;"`'
|
||||
font-weight: '`[ "$dark_bg" ] && echo 'normal;' || echo 'bold;'`'
|
||||
}
|
||||
.reverse {
|
||||
/* CSS doesnt support swapping fg and bg colours unfortunately,
|
||||
so just hardcode something that will look OK on all backgrounds. */
|
||||
'"color: #$P0; background-color: #$P7;"'
|
||||
}
|
||||
.underline { text-decoration: underline; }
|
||||
.line-through { text-decoration: line-through; }
|
||||
.blink { text-decoration: blink; }
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body class="f9 b9">
|
||||
<pre>
|
||||
'
|
||||
|
||||
p='\x1b\[' #shortcut to match escape codes
|
||||
P="\(^[^°]*\)¡$p" #expression to match prepended codes below
|
||||
|
||||
# Handle various xterm control sequences.
|
||||
# See /usr/share/doc/xterm-*/ctlseqs.txt
|
||||
sed "
|
||||
s#\x1b[^\x1b]*\x1b\\\##g # strip anything between \e and ST
|
||||
s#\x1b][0-9]*;[^\a]*\a##g # strip any OSC (xterm title etc.)
|
||||
|
||||
#handle carriage returns
|
||||
s#^.*\r\{1,\}\([^$]\)#\1#
|
||||
s#\r\$## # strip trailing \r
|
||||
|
||||
# strip other non SGR escape sequences
|
||||
s#[\x07]##g
|
||||
s#\x1b[]>=\][0-9;]*##g
|
||||
s#\x1bP+.\{5\}##g
|
||||
s#${p}[0-9;?]*[^0-9;?m]##g
|
||||
|
||||
#remove backspace chars and what they're backspacing over
|
||||
:rm_bs
|
||||
s#[^\x08]\x08##g; t rm_bs
|
||||
" |
|
||||
|
||||
# Normalize the input before transformation
|
||||
sed "
|
||||
# escape HTML
|
||||
s#\&#\&#g; s#>#\>#g; s#<#\<#g; s#\"#\"#g
|
||||
|
||||
# normalize SGR codes a little
|
||||
|
||||
# split 256 colors out and mark so that they're not
|
||||
# recognised by the following 'split combined' line
|
||||
:e
|
||||
s#${p}\([0-9;]\{1,\}\);\([34]8;5;[0-9]\{1,3\}\)m#${p}\1m${p}¬\2m#g; t e
|
||||
s#${p}\([34]8;5;[0-9]\{1,3\}\)m#${p}¬\1m#g;
|
||||
|
||||
:c
|
||||
s#${p}\([0-9]\{1,\}\);\([0-9;]\{1,\}\)m#${p}\1m${p}\2m#g; t c # split combined
|
||||
s#${p}0\([0-7]\)#${p}\1#g #strip leading 0
|
||||
s#${p}1m\(\(${p}[4579]m\)*\)#\1${p}1m#g #bold last (with clr)
|
||||
s#${p}m#${p}0m#g #add leading 0 to norm
|
||||
|
||||
# undo any 256 color marking
|
||||
s#${p}¬\([34]8;5;[0-9]\{1,3\}\)m#${p}\1m#g;
|
||||
|
||||
# map 16 color codes to color + bold
|
||||
s#${p}9\([0-7]\)m#${p}3\1m${p}1m#g;
|
||||
s#${p}10\([0-7]\)m#${p}4\1m${p}1m#g;
|
||||
|
||||
# change 'reset' code to a single char, and prepend a single char to
|
||||
# other codes so that we can easily do negative matching, as sed
|
||||
# does not support look behind expressions etc.
|
||||
s#°#\°#g; s#${p}0m#°#g
|
||||
s#¡#\¡#g; s#${p}[0-9;]*m#¡&#g
|
||||
" |
|
||||
|
||||
# Convert SGR sequences to HTML
|
||||
sed "
|
||||
:ansi_to_span # replace ANSI codes with CSS classes
|
||||
t ansi_to_span # hack so t commands below only apply to preceeding s cmd
|
||||
|
||||
/^[^¡]*°/ { b span_end } # replace 'reset code' if no preceeding code
|
||||
|
||||
# common combinations to minimise html (optional)
|
||||
s#${P}3\([0-7]\)m¡${p}4\([0-7]\)m#\1<span class=\"f\2 b\3\">#;t span_count
|
||||
s#${P}4\([0-7]\)m¡${p}3\([0-7]\)m#\1<span class=\"f\3 b\2\">#;t span_count
|
||||
|
||||
s#${P}1m#\1<span class=\"bold\">#; t span_count
|
||||
s#${P}4m#\1<span class=\"underline\">#; t span_count
|
||||
s#${P}5m#\1<span class=\"blink\">#; t span_count
|
||||
s#${P}7m#\1<span class=\"reverse\">#; t span_count
|
||||
s#${P}9m#\1<span class=\"line-through\">#; t span_count
|
||||
s#${P}3\([0-9]\)m#\1<span class=\"f\2\">#; t span_count
|
||||
s#${P}4\([0-9]\)m#\1<span class=\"b\2\">#; t span_count
|
||||
|
||||
s#${P}38;5;\([0-9]\{1,3\}\)m#\1<span class=\"ef\2\">#; t span_count
|
||||
s#${P}48;5;\([0-9]\{1,3\}\)m#\1<span class=\"eb\2\">#; t span_count
|
||||
|
||||
s#${P}[0-9;]*m#\1#g; t ansi_to_span # strip unhandled codes
|
||||
|
||||
b # next line of input
|
||||
|
||||
# add a corresponding span end flag
|
||||
:span_count
|
||||
x; s/^/s/; x
|
||||
b ansi_to_span
|
||||
|
||||
# replace 'reset code' with correct number of </span> tags
|
||||
:span_end
|
||||
x
|
||||
/^s/ {
|
||||
s/^.//
|
||||
x
|
||||
s#°#</span>°#
|
||||
b span_end
|
||||
}
|
||||
x
|
||||
s#°##
|
||||
b ansi_to_span
|
||||
" |
|
||||
|
||||
# Convert alternative character set
|
||||
# Note we convert here, as if we do at start we have to worry about avoiding
|
||||
# conversion of SGR codes etc., whereas doing here we only have to
|
||||
# avoid conversions of stuff between &...; or <...>
|
||||
#
|
||||
# Note we could use sed to do this based around:
|
||||
# sed 'y/abcdefghijklmnopqrstuvwxyz{}`~/▒␉␌␍␊°±␋┘┐┌└┼⎺⎻─⎼⎽├┤┴┬│≤≥π£◆·/'
|
||||
# However that would be very awkward as we need to only conv some input.
|
||||
# The basic scheme that we do in the python script below is:
|
||||
# 1. enable transliterate once ¡ char seen
|
||||
# 2. disable once µ char seen (may be on diff line to ¡)
|
||||
# 3. never transliterate between &; or <> chars
|
||||
sed "
|
||||
# change 'smacs' and 'rmacs' to a single char so that we can easily do
|
||||
# negative matching, as sed does not support look behind expressions etc.
|
||||
# Note we don't use ° like above as that's part of the alternate charset.
|
||||
s#\x1b(0#¡#g;
|
||||
s#µ#\µ#g; s#\x1b(B#µ#g
|
||||
" |
|
||||
(
|
||||
python -c "
|
||||
# vim:fileencoding=utf8
|
||||
|
||||
import sys
|
||||
import locale
|
||||
encoding=locale.getpreferredencoding()
|
||||
|
||||
old='abcdefghijklmnopqrstuvwxyz{}\`~'
|
||||
new='▒␉␌␍␊°±␋┘┐┌└┼⎺⎻─⎼⎽├┤┴┬│≤≥π£◆·'
|
||||
new=unicode(new, 'utf-8')
|
||||
table=range(128)
|
||||
for o,n in zip(old, new): table[ord(o)]=n
|
||||
|
||||
(STANDARD, ALTERNATIVE, HTML_TAG, HTML_ENTITY) = (0, 1, 2, 3)
|
||||
|
||||
state = STANDARD
|
||||
last_mode = STANDARD
|
||||
for c in unicode(sys.stdin.read(), encoding):
|
||||
if state == HTML_TAG:
|
||||
if c == '>':
|
||||
state = last_mode
|
||||
elif state == HTML_ENTITY:
|
||||
if c == ';':
|
||||
state = last_mode
|
||||
else:
|
||||
if c == '<':
|
||||
state = HTML_TAG
|
||||
elif c == '&':
|
||||
state = HTML_ENTITY
|
||||
elif c == u'¡' and state == STANDARD:
|
||||
state = ALTERNATIVE
|
||||
last_mode = ALTERNATIVE
|
||||
continue
|
||||
elif c == u'µ' and state == ALTERNATIVE:
|
||||
state = STANDARD
|
||||
last_mode = STANDARD
|
||||
continue
|
||||
elif state == ALTERNATIVE:
|
||||
c = c.translate(table)
|
||||
sys.stdout.write(c.encode(encoding))
|
||||
" 2>/dev/null ||
|
||||
sed 's/[¡µ]//g' # just strip aternative flag chars
|
||||
)
|
||||
|
||||
echo "</pre>
|
||||
</body>
|
||||
</html>"
|
|
@ -0,0 +1,51 @@
|
|||
# !/bin/sh
|
||||
# apt-fast v0.03 by Matt Parnell http://www.mattparnell.com, this thing is fully open-source
|
||||
# if you do anything cool with it, let me know so I can publish or host it for you
|
||||
# contact me at admin@mattparnell.com
|
||||
|
||||
# Special thanks
|
||||
# Travis/travisn000 - support for complex apt-get commands
|
||||
# Allan Hoffmeister - aria2c support
|
||||
# Abhishek Sharma - aria2c with proxy support
|
||||
# Richard Klien - Autocompletion, Download Size Checking (made for on ubuntu, untested on other distros)
|
||||
# Patrick Kramer Ruiz - suggestions - see Suggestions.txt
|
||||
# Sergio Silva - test to see if axel is installed, root detection/sudo autorun
|
||||
|
||||
# Use this just like apt-get for faster package downloading.
|
||||
|
||||
# Check for proper priveliges
|
||||
[ "`whoami`" = root ] || exec sudo "$0" "$@"
|
||||
|
||||
# Test if the axel is installed
|
||||
if [ ! -x /usr/bin/axel ]
|
||||
then echo "axel is not installed, perform this?(y/n)"
|
||||
read ops
|
||||
case $ops in
|
||||
y) if apt-get install axel -y --force-yes
|
||||
then echo "axel installed"
|
||||
else echo "unable to install the axel. you are using sudo?" ; exit
|
||||
fi ;;
|
||||
n) echo "not possible usage apt-fast" ; exit ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# If the user entered arguments contain upgrade, install, or dist-upgrade
|
||||
if echo "$@" | grep -q "upgrade\|install\|dist-upgrade"; then
|
||||
echo "Working...";
|
||||
|
||||
# Go into the directory apt-get normally puts downloaded packages
|
||||
cd /var/cache/apt/archives/;
|
||||
|
||||
# Have apt-get print the information, including the URI's to the packages
|
||||
# Strip out the URI's, and download the packages with Axel for speediness
|
||||
# I found this regex elsewhere, showing how to manually strip package URI's you may need...thanks to whoever wrote it
|
||||
apt-get -y --print-uris $@ | egrep -o -e "(ht|f)tp://[^\']+" > apt-fast.list && cat apt-fast.list | xargs -l1 axel -a
|
||||
|
||||
# Perform the user's requested action via apt-get
|
||||
apt-get $@;
|
||||
|
||||
echo -e "\nDone! Verify that all packages were installed successfully. If errors are found, run apt-get clean as root and try again using apt-get directly.\n";
|
||||
|
||||
else
|
||||
apt-get $@;
|
||||
fi
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
sudo modprobe bnep
|
||||
sudo pand --listen -c 78:CA:04:B7:9E:35 --role=NAP -n --persist
|
||||
sudo ifconfig bnep0
|
||||
sudo ifup bnep0
|
|
@ -0,0 +1,22 @@
|
|||
#!/usr/bin/php
|
||||
<?php
|
||||
$directory = '/home/nemo/.gvfs/Nemo%27s iPad/Books/Purchases/';
|
||||
$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));
|
||||
while($it->valid()){
|
||||
if (!$it->isDot()){
|
||||
$filename = $it->key();
|
||||
if(substr($filename,-6)=='.xhtml'){
|
||||
echo $filename."\n";
|
||||
$f = file($filename);
|
||||
if(count($f)>10){
|
||||
if(strpos($f[10],"@namespace")!==false){
|
||||
$f[10]="<div>\n";
|
||||
$contents = join("",$f);
|
||||
file_put_contents($filename,$contents);
|
||||
echo "Updated\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$it->next();
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/sh
|
||||
echo Search whole filesystem for changed files in the last $1 minutes
|
||||
find /bin /dev /etc /home /lib /media /mnt /opt /root /sbin /srv /tmp /usr /var -cmin -$1
|
|
@ -0,0 +1,60 @@
|
|||
import mechanize
|
||||
import cookielib
|
||||
from BeautifulSoup import BeautifulSoup
|
||||
import html2text
|
||||
|
||||
# Browser
|
||||
br = mechanize.Browser()
|
||||
|
||||
# Cookie Jar
|
||||
cj = cookielib.LWPCookieJar()
|
||||
br.set_cookiejar(cj)
|
||||
|
||||
# Browser options
|
||||
br.set_handle_equiv(True)
|
||||
br.set_handle_gzip(True)
|
||||
br.set_handle_redirect(True)
|
||||
br.set_handle_referer(True)
|
||||
br.set_handle_robots(False)
|
||||
|
||||
# Follows refresh 0 but not hangs on refresh > 0
|
||||
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
|
||||
|
||||
# User-Agent (this is cheating, ok?)
|
||||
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
|
||||
|
||||
# The site we will navigate into, handling it's session
|
||||
br.open('http://gmail.com')
|
||||
|
||||
# Select the first (index zero) form
|
||||
br.select_form(nr=0)
|
||||
|
||||
# User credentials
|
||||
br.form['Email'] = 'captn3m0'
|
||||
br.form['Passwd'] = 'bot_add_ct Shark'
|
||||
|
||||
# Login
|
||||
br.submit()
|
||||
|
||||
# Filter all links to mail messages in the inbox
|
||||
all_msg_links = [l for l in br.links(url_regex='\?v=c&th=')]
|
||||
# Select the first 3 messages
|
||||
for msg_link in all_msg_links[0:3]:
|
||||
print msg_link
|
||||
# Open each message
|
||||
br.follow_link(msg_link)
|
||||
html = br.response().read()
|
||||
soup = BeautifulSoup(html)
|
||||
# Filter html to only show the message content
|
||||
msg = str(soup.findAll('div', attrs={'class': 'msg'})[0])
|
||||
# Show raw message content
|
||||
print msg
|
||||
# Convert html to text, easier to read but can fail if you have intl
|
||||
# chars
|
||||
# print html2text.html2text(msg)
|
||||
print
|
||||
# Go back to the Inbox
|
||||
br.follow_link(text='Inbox')
|
||||
|
||||
# Logout
|
||||
br.follow_link(text='Sign out')
|
|
@ -0,0 +1,102 @@
|
|||
|
||||
throw () {
|
||||
echo "$*" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
tokenize () {
|
||||
local ESCAPE='(\\[^u[:cntrl:]]|\\u[0-9a-fA-F]{4})'
|
||||
local CHAR='[^[:cntrl:]"\\]'
|
||||
local STRING="\"$CHAR*($ESCAPE$CHAR*)*\""
|
||||
local NUMBER='-?(0|[1-9][0-9]*)([.][0-9]*)?([eE][+-]?[0-9]*)?'
|
||||
local KEYWORD='null|false|true'
|
||||
local SPACE='[[:space:]]+'
|
||||
egrep -ao "$STRING|$NUMBER|$KEYWORD|$SPACE|." --color=never |
|
||||
egrep -v "^$SPACE$" # eat whitespace
|
||||
}
|
||||
|
||||
parse_array () {
|
||||
local index=0
|
||||
local ary=''
|
||||
read -r token
|
||||
case "$token" in
|
||||
']') ;;
|
||||
*)
|
||||
while :
|
||||
do
|
||||
parse_value "$1" "$index"
|
||||
let index=$index+1
|
||||
ary="$ary""$value"
|
||||
read -r token
|
||||
case "$token" in
|
||||
']') break ;;
|
||||
',') ary="$ary," ;;
|
||||
*) throw "EXPECTED , or ] GOT ${token:-EOF}" ;;
|
||||
esac
|
||||
read -r token
|
||||
done
|
||||
;;
|
||||
esac
|
||||
value=`printf '[%s]' $ary`
|
||||
}
|
||||
|
||||
parse_object () {
|
||||
local key
|
||||
local obj=''
|
||||
read -r token
|
||||
case "$token" in
|
||||
'}') ;;
|
||||
*)
|
||||
while :
|
||||
do
|
||||
case "$token" in
|
||||
'"'*'"') key=$token ;;
|
||||
*) throw "EXPECTED string GOT ${token:-EOF}" ;;
|
||||
esac
|
||||
read -r token
|
||||
case "$token" in
|
||||
':') ;;
|
||||
*) throw "EXPECTED : GOT ${token:-EOF}" ;;
|
||||
esac
|
||||
read -r token
|
||||
parse_value "$1" "$key"
|
||||
obj="$obj$key:$value"
|
||||
read -r token
|
||||
case "$token" in
|
||||
'}') break ;;
|
||||
',') obj="$obj," ;;
|
||||
*) throw "EXPECTED , or } GOT ${token:-EOF}" ;;
|
||||
esac
|
||||
read -r token
|
||||
done
|
||||
;;
|
||||
esac
|
||||
value=`printf '{%s}' "$obj"`
|
||||
}
|
||||
|
||||
parse_value () {
|
||||
local jpath="${1:+$1,}$2"
|
||||
case "$token" in
|
||||
'{') parse_object "$jpath" ;;
|
||||
'[') parse_array "$jpath" ;;
|
||||
# At this point, the only valid single-character tokens are digits.
|
||||
''|[^0-9]) throw "EXPECTED value GOT ${token:-EOF}" ;;
|
||||
*) value=$token ;;
|
||||
esac
|
||||
printf "[%s]\t%s\n" "$jpath" "$value"
|
||||
}
|
||||
|
||||
parse () {
|
||||
read -r token
|
||||
parse_value
|
||||
read -r token
|
||||
case "$token" in
|
||||
'') ;;
|
||||
*) throw "EXPECTED EOF GOT $token" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
if [ $0 = $BASH_SOURCE ];
|
||||
then
|
||||
tokenize | parse
|
||||
fi
|
|
@ -0,0 +1,12 @@
|
|||
#! /bin/bash
|
||||
#echo Mediafire Download Script using Plowdown + Axel
|
||||
#echo Usage mfd URL [num]
|
||||
url=$1
|
||||
if [ ${url:0:4} != http ]; then
|
||||
url="http://$url"
|
||||
fi
|
||||
#echo ${url:0:4}
|
||||
echo Downloading $url
|
||||
plowdown -p mtvz --run-download="axel -n 20 -a %url" $url
|
||||
#Plowdown using axel and 10 threads to download the url
|
||||
|
|
@ -0,0 +1,142 @@
|
|||
#!/usr/bin/perl -Tw
|
||||
|
||||
# Simple liferea (and possibly for other things) conversion filter to download
|
||||
# content for offline viewing during feed updates.
|
||||
#
|
||||
# Pigeon <pigeon at pigeond dot net>
|
||||
#
|
||||
# http://pigeond.net/
|
||||
#
|
||||
# Latest version of this script can be found at:
|
||||
# git://pigeond.net/offline_filter/
|
||||
#
|
||||
# GPLv2
|
||||
#
|
||||
#
|
||||
# What it currently does:
|
||||
# - Look for matching pattern (e.g. img src url).
|
||||
# - Download it using wget if it is not already downloaded.
|
||||
# - Replace original src in the feed with the local downloaded one.
|
||||
#
|
||||
# Limitations:
|
||||
# - Will download all matched elements (img), one by one.
|
||||
# - Will not redownload a file if it has been changed remotely.
|
||||
#
|
||||
# TODO:
|
||||
# - Doesn't handle things spanned across multiple lines
|
||||
#
|
||||
|
||||
use strict;
|
||||
use Digest::SHA1 qw(sha1_hex);
|
||||
use HTML::Entities;
|
||||
|
||||
delete @ENV{qw(IFS CDPATH ENV BASH_ENV PATH)};
|
||||
|
||||
my ($HOME) = ($ENV{'HOME'} =~ /([a-zA-Z0-9\/\.\_]+)/);
|
||||
|
||||
my $SAVE_PATH = "${HOME}/.liferea_1.4/cache/saves";
|
||||
my $WGET = '/usr/bin/wget';
|
||||
my $WGET_TIMEOUT = 5;
|
||||
|
||||
my @BLACKLIST_RE = (
|
||||
);
|
||||
|
||||
my $debug = 0;
|
||||
|
||||
|
||||
sub url_fetch {
|
||||
|
||||
my ($url) = @_;
|
||||
|
||||
my ($ok) = undef;
|
||||
|
||||
my $outfile = $SAVE_PATH.'/'.sha1_hex($url);
|
||||
|
||||
if ($url =~ m/(\.[a-zA-Z]{3,4})$/) {
|
||||
$outfile .= lc($1);
|
||||
}
|
||||
|
||||
if (-f $outfile) {
|
||||
|
||||
if ($debug) {
|
||||
print(STDERR "Skipping [${url}], already in [${outfile}]\n");
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
$url = decode_entities($url);
|
||||
|
||||
# use one upper level as referer
|
||||
my $referer = $url;
|
||||
$referer =~ s![^/]*?$!!;
|
||||
|
||||
my @args = ($WGET, '-O', $outfile, '-T', $WGET_TIMEOUT);
|
||||
if (!$debug) {
|
||||
push(@args, '-q');
|
||||
}
|
||||
|
||||
push(@args, "--referer=${referer}");
|
||||
|
||||
push(@args, $url);
|
||||
|
||||
if ($debug) {
|
||||
print(STDERR "Running [".join(' ', @args)."]\n");
|
||||
}
|
||||
|
||||
if (system(@args) != 0) {
|
||||
if ($debug) {
|
||||
print(STDERR "Fetch failed for [${url}]\n");
|
||||
}
|
||||
unlink(${outfile});
|
||||
$outfile = undef;
|
||||
}
|
||||
}
|
||||
|
||||
return $outfile;
|
||||
}
|
||||
|
||||
|
||||
sub img_func {
|
||||
my ($matched, $src) = @_;
|
||||
my ($ok) = undef;
|
||||
|
||||
if ($src ne '') {
|
||||
|
||||
foreach my $u (@BLACKLIST_RE) {
|
||||
return ${matched} if (${src} =~ ${u});
|
||||
}
|
||||
|
||||
my $outfile = url_fetch($src);
|
||||
|
||||
if ($outfile) {
|
||||
$matched =~ s!\Q${src}\E!file://${outfile}!g;
|
||||
}
|
||||
}
|
||||
return $matched;
|
||||
}
|
||||
|
||||
|
||||
my %handler = (
|
||||
|
||||
# save <img> images for offline viewing
|
||||
qr{(?:<|<)img .*?src=(?:"|'|")?(http://.*?)(?:>|>|"|'|"|\s)}i =>
|
||||
'img_func($&, $1)',
|
||||
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
my @lines = <>;
|
||||
|
||||
system("mkdir -p ${SAVE_PATH}");
|
||||
|
||||
foreach my $l (@lines) {
|
||||
foreach my $regex (keys(%handler)) {
|
||||
$l =~ s/$regex/$handler{$regex}/gee;
|
||||
}
|
||||
print($l);
|
||||
}
|
||||
|
||||
exit(0);
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
#! /usr/bin/php
|
||||
<?php
|
||||
/**
|
||||
* My password generator
|
||||
* based on the lifehacker suggestion
|
||||
* Password = md5("l"+key+"r");
|
||||
* l,r = first,last letter of domain name
|
||||
*/
|
||||
//you get individual secure passwords that you can
|
||||
//regenrate easily
|
||||
$cout = fopen("php://stdout","w");
|
||||
fwrite($cout,"Enter domain name: ");
|
||||
$cin = fopen('php://stdin','r');
|
||||
$domain = fread($cin,4096);
|
||||
fwrite($cout,"Enter key pass phrase: ");
|
||||
$cin = fopen('php://stdin','r');
|
||||
$key = fread($cin,4096);
|
||||
|
||||
echo "Password : ". md5($domain[0].$key.substr($domain,-1))."\n";
|
||||
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
#!/bin/bash
|
||||
for i in {1..65535}
|
||||
do
|
||||
nc -w 2 open.zorinaq.com $i
|
||||
rc=$?
|
||||
if [[ $rc == 0 ]] ; then
|
||||
echo "Port $i unblocked"
|
||||
fi
|
||||
done
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/bash
|
||||
sleep 5
|
||||
ls $1 -hs
|
||||
sleepsize.sh $1
|
|
@ -0,0 +1,84 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Vimeo Downloader
|
||||
#
|
||||
# Copyright (C) 2008, 2010 Denver Gingerich
|
||||
# Copyright (C) 2009 Jori Hamalainen
|
||||
#
|
||||
# Permission to use, copy, modify, and/or distribute this software for any
|
||||
# purpose with or without fee is hereby granted, provided that the above
|
||||
# copyright notice and this permission notice appear in all copies.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
|
||||
if [ $# -ne 1 ]; then
|
||||
echo "Vimeo Downloader v0.3.1"
|
||||
echo "by Denver Gingerich (http://ossguy.com/)"
|
||||
echo " with script improvements by Jori Hamalainen"
|
||||
echo
|
||||
echo "Usage: $0 <vimeo_id|vimeo_URL>"
|
||||
exit 1
|
||||
fi
|
||||
VIMEO_ID=`echo $1 | awk -F / '{print $NF}'`
|
||||
|
||||
which wget
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Using wget..."
|
||||
GET_CMD="wget -O -"
|
||||
else
|
||||
which curl
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Using curl..."
|
||||
GET_CMD="curl -L"
|
||||
else
|
||||
echo "Could not find wget or curl"
|
||||
exit 2
|
||||
fi
|
||||
fi
|
||||
|
||||
which perl
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Using perl..."
|
||||
USING_PERL=1
|
||||
else
|
||||
echo "Using sed..."
|
||||
USING_PERL=0
|
||||
fi
|
||||
|
||||
VIDEO_XML=`${GET_CMD} http://www.vimeo.com/moogaloop/load/clip:${VIMEO_ID}`
|
||||
|
||||
if [ $USING_PERL -eq 1 ]; then
|
||||
REQUEST_SIGNATURE=`echo $VIDEO_XML | perl -p -e 's:^.*?\<request_signature\>(.*?)\</request_signature\>.*$:$1:g'`
|
||||
REQUEST_SIGNATURE_EXPIRES=`echo $VIDEO_XML | perl -p -e 's:^.*?\<request_signature_expires\>(.*?)\</request_signature_expires\>.*$:$1:g'`
|
||||
CAPTION=`echo $VIDEO_XML | perl -p -e 's:^.*?\<caption\>(.*?)\</caption\>.*$:$1:g'`
|
||||
ISHD=`echo $VIDEO_XML | perl -p -e 's:^.*?\<isHD\>(.*?)\</isHD\>.*$:$1:g'`
|
||||
|
||||
if [ ${ISHD} -eq 1 ]; then
|
||||
ISHD="hd"
|
||||
else
|
||||
ISHD="sd"
|
||||
fi
|
||||
|
||||
# caption can contain bad characters (like '/') so don't use it for now
|
||||
#FILENAME="${CAPTION}-(${ISHD}${VIMEO_ID}).flv"
|
||||
|
||||
FILENAME="${VIMEO_ID}-${ISHD}.flv"
|
||||
else
|
||||
REQUEST_SIGNATURE=`echo $VIDEO_XML | sed -e 's/^.*<request_signature>\([^<]*\)<.*$/\1/g'`
|
||||
REQUEST_SIGNATURE_EXPIRES=`echo $VIDEO_XML | sed -e 's/^.*<request_signature_expires>\([^<]*\)<.*$/\1/g'`
|
||||
ISHD="sd"
|
||||
FILENAME=${VIMEO_ID}.flv
|
||||
fi
|
||||
|
||||
echo "\nDownloading video ${VIMEO_ID} to ${FILENAME}...\nRequest_signature=${REQUEST_SIGNATURE}\nRequest_signature_expires=${REQUEST_SIGNATURE_EXPIRES}\n"
|
||||
axel -n 10 -a "http://www.vimeo.com/moogaloop/play/clip:${VIMEO_ID}/${REQUEST_SIGNATURE}/${REQUEST_SIGNATURE_EXPIRES}/?q=${ISHD}" -o "${FILENAME}"
|
||||
echo "Video ${VIMEO_ID} saved to ${FILENAME}"
|
||||
echo `file "${FILENAME}"`
|
||||
echo
|
Loading…
Reference in New Issue