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