Ftp Download in bash script
Hi! I'm runnig a bash script in solaris i want within the script to dowload file using ftp
How can i do it?
Tanks a lot
For my driver download/reboot script I use a small program available in the ncftp package off of SunFreeware called ncftpget. It's takes a URL containing username, password, hostname, and path as the commandline argument and gets the file.
ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/ncftp-3.0.1-sol8-sparc-local.gz
Hope that helps....
-M
Similar Messages
-
A friend of mine wrote me this short script to run in terminal that downloads a particular file every n seconds from a password protectected FTP site. The script worked on his linux machine and on my Mac but not on my collegues Macs. I'm wondering if anybody knows reasons why it may be failing on other Macs.
We changing the first line from: #!/bin/sh to #!/bin/bash
and exceuting with
user_prompt_$ bash ./download_stats.sh
Another idea is to script cyberduck but it doesn't support applescript though may have a comand line interface (looking into that at present).
There error output from one of the accounts it fails on follows the script listing.
#!/bin/sh
# =================================================================
# Download XML_stats Bash Script
# Filename: download_stats.sh
# Arguments: input_filename - file to be downloaded from remote server. Optional.
# poll_interval - seconds delay between downloads. Optional (input_filename must be present)
# Use: Invoke from shell, e.g. ./download_stats.sh
# Author: Luke Neeson
# Date Created: 2012-05-31
# Comments: This script will download a given file, input_filename, at the given interval, poll_interval.
# Notes:
# - .netrc is required in the current directory and must contain the logon details for the fox server. This could be installed in the user home directory, if so, delete the line marked below.
# =================================================================
# If the .netrc is in the directory of this script, the following must be enabled. If the user's home .netrc is to be used, comment out the following line:
export HOME="`pwd`"
export input_filename="the_file_I_want_as_default.xml"
export poll_interval=10
if [ ! -z "$1" ] ; then
export input_filename="$1"
if [ ! -z "$2" ] ; then
export poll_interval="$2"
fi
fi
while [ true ]
do
ftp access.foxsports.com.au << EOF 2>&1 | sed 's/.*AUTH GSSAPI.*//g' | sed 's/.*KERBEROS.*//g'
get "$input_filename"
quit
EOF
sleep $poll_interval
done
ERRORS RETURNED:
a-mbp:~ macca$
a-mbp:~ macca$ cd ~/stats/download_rugby_stats/
a-mbp:download_stats a$ sh download_rugby_stats.sh
: command not founds.sh: line 16:
: command not founds.sh: line 19:
: command not founds.sh: line 22:
download_stats.sh: line 39: syntax error: unexpected end of file
a-mbp:download_stats a$
Those are the blank lines and 39 is the last line of script.Thanks Bob, Luke mentioned which but didn't go into it.
cat -vte download_rugby_stats.sh ——> Does this look good to you?
# ================================================================= $
# Download Rugby Stats Bash Script$
#$
# Filename: download_rugby_stats.sh$
# Arguments: input_filename - file to be downloaded from remote server. Optional.$
# poll_interval - seconds delay between downloads. Optional (input_filename must be present)$
# Use: Invoke from shell, e.g. ./download_rugby_stats.sh$
# Author: Luke Neeson$
# Date Created: 2012-05-31$
# Comments: This script will download a given file, input_filename, at the given interval, poll_interval. $
# Notes: $
# - .netrc is required in the current directory and must contain the logon details for the fox server. This could be installed in the user home directory, if so, delete the line marked below.$
# ================================================================= $
$
# If the .netrc is in the directory of this script, the following must be enabled. If the user's home .netrc is to be used, comment out the following line:$
export HOME="`pwd`"$
$
export input_filename="Rugby_IRB20120101_Client.xml"$
export poll_interval=10$
$
if [ ! -z "$1" ] ; then$
export input_filename="$1"$
if [ ! -z "$2" ] ; then$
export poll_interval="$2"$
fi$
fi$
$
while [ true ]$
do $
ftp access.foxsports.com.au << EOF 2>&1 | sed 's/.*AUTH GSSAPI.*//g' | sed 's/.*KERBEROS.*//g'$
get "$input_filename"$
quit$
EOF$
sleep $poll_interval$
done$
$ -
How to download file using ftp in bash script
Hi! I'm runnig a bash script in solaris i want within the script to dowload file using ftp
How can i do it?
Tanks a lothello,evgchech
please try this way:
1. In the bash script, try following command:
ftp -n < ftpcmdfile2 in the ftpcmdfile (which is a file),coding the interactive commands of FTP such as:
user anonymous [email protected]
cd /var/sun/download
bi
mget *.*
bye
try it and good luck!
Wang Yu
Developer Technical Support
Sun Microsystems
http://sun.com/developers/support -
Dowload file using ftp in bash script
Hi! I'm runnig a bash script in solaris i want within the script to dowload file using ftp
How can i do it?
Tanks a lothello,evgchech
please try this way:
1. In the bash script, try following command:
ftp -n < ftpcmdfile2 in the ftpcmdfile (which is a file),coding the interactive commands of FTP such as:
user anonymous [email protected]
cd /var/sun/download
bi
mget *.*
bye
try it and good luck!
Wang Yu
Developer Technical Support
Sun Microsystems
http://sun.com/developers/support -
Download Bash script running from Task-bar folder
Hi, Not sure why but when Im trying to open my Downloads file from the task bar its openning up on my desktop as "Downloads-Bash script! how do i stop this please. Its the same if I open from Finder.
Thank you all in anticipation of a resolve.Enter the following command in a Terminal window by copying or dragging (don’t type):
xattr -c ~/Downloads
Press return. You can then quit Terminal. Try the action again. If the same thing happens, relaunch the Finder by selecting
▹ Force Quit ▹ Finder
and pressing return or clicking Relaunch. -
Bash script to sync KeepassX database
I created a my first little bash script to sync my Keepass(X) (Keepass on Windows boxes and KeepassX on Linux boxes) over a secure (SSL + Login) webdav enabled site.
#!/bin/bash
host=https://www.some_dav_enabled_website.com/db.kdb
user=foo
pass=bar
fpath=/somefolder/db.kdb
function update {
echo "Deleting old KeepassX database..."
rm $fpath
echo "Downloading new KeepassX database..."
curl -sku $user:$pass $host -o $fpath
echo "Starting KeepassX..."
keepassx $fpath &
function sync {
echo "Uploading the KeepassX database to server..."
curl -sku $user:$pass -X PUT -T $fpath $host &> /dev/null
echo "Database updated!"
while getopts "us" optname
do
case "$optname" in
"u")
update
"s")
sync
echo "Usage: -u Update to the latest KeepassX database."
echo " -s Sync the (un)modified KeepassX database."
esac
done
Enjoy !
Last edited by SiB (2008-07-31 23:58:59)Hi Sybrand Bakker,
I tried streams for the replication purpose as per your suggesion, till Iam unable make it work , i dont find a step by step document which will make it possible without error.
One more thing , i need the streams work without Database link, ie., source database is not connected directly to destination database. I need to create streams and transfer the stream as a file through FTP.I need to download stream file in remote location and then apply the streams to destination database and after this source and destination database should be same in data and schema.
Please suggest me a solution to go abt this scenario. We are in critical stage to make it happen...
thanking you in advance
with regards
vivek
Message was edited by:
Vivekanandh -
Escaping filename in bash script
What is the easiest way to escape a file name in a bash script? Any legal character can be in the name.
bash code:
fileCheckSum=$( cat "${theFilePath}" "${theFilePath}/rsrc" | md5 )
I thought that I escaped the filenames already. Guess not.
/Users/mac/cons/see/file name varients/funies '2/file 4
cat: /Users/mac/cons/see/file name varients/funies '2/file 4: No such file or directory
cat: /Users/mac/cons/see/file name varients/funies '2/file 4/rsrc: No such file or directory
RobertFor my driver download/reboot script I use a small program available in the ncftp package off of SunFreeware called ncftpget. It's takes a URL containing username, password, hostname, and path as the commandline argument and gets the file.
ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/ncftp-3.0.1-sol8-sparc-local.gz
Hope that helps....
-M -
What do you think of my Bash Script? What about the error checking?
Well what do you think of this Bash script
It works
I gave it some problems (i.e. unpluged the ethernet, messed up the URL's, uninstaled some programs...) to see if would report errors and stop or just keep going... But it did
I just kind of thought up a way to do some error checking with the commands that I know.....
What is a better way to do error checking?
What do you think I should add/Do to this script?
#!/bin/bash
# Shell script to make a USB Tumb Drive for Flashing BIOS on a Lenovo Ideapad Y510.
# This script needs to be owned and run as ROOT with the "sudo command"
# i.e. sudo usbbiosflasher
# If you have anyideas send me a PM on ubuntufourms.org my user name is HunterThomson
# Name/Rename this script usbbiosflasher and save it to the ~/home directory.
# Then run the command- chown root:root usbbiosflasher
# Then run the command- chmod 755 usbbiosflasher
# Then copy the script to the directory /usr/bin.
# Run this comand to do that- sudo cp ~/usbbiosflasher /usr/bin
# You also must have the program "mbr" installed
# You can install the mbr program by running this comand in the shell on Ubuntu
# sudo apt-get install mbr
# In Arch Linux you have to get it from Aur
# First you will need to know a few things...
# You will also need to know the Mount Point i.e. /media/disk and the /dev path i.e. /dev/sdb1.
# You can find these by using the df -T comand.
# Run df -T in the shell. Then plug in the USB Thumb Drive and run the df -T comand agin.
# The new listing is the USB Thumb Dirve.
# Also check to make sure the File System tipe is vFAT or FAT16 or FAT32.
# If it is not use gparted to format it to FAT32.
# I am farly certen that all USB Thumb drives come formated with FAT file system out of the BOX.
# You may want to fromat it anyway just to make sure.
echo "Interactive Shell Script to Make a USB Thumb Drive \for Flashing BIOS On a Lenovo Ideapad Y510"
echo ""
echo "You will need to have the program mbr installed"
echo "If you are on Ubuntu Linux you can retreve it form the repositories"
echo "If you are on Arch Linux you will need to get it from the Aur repository"
echo "Open anuther shell and \do that now..."
echo ""
verify="n"
while [ "$verify" != y ]
do
printf "Do you have mbr installed... yes or no?"
read AN1
echo ""
printf "You answered... $AN1 I have installed mbr. Is this correct... y or n?"
read verify
done
echo ""
if [ "$AN1" == "no" ]
then
echo "Install mbr now. Then run this script agin"
exit
else
echo "contunuing script"
fi
echo ""
# The next comand will make a directory to put needed files into. Note this file and everything init will be owned by root.
mkdir ~/usbbiosfiles && check1="yes"
if [ "$check1" = "yes" ]
then
echo "Made directory usbbiosfiles... OK"
else
echo "Could not \make directory usbbiosfiles"
echo "look above \for \info"
echo "Fix the problem and run this scrip agin"
exit
fi
# The next two comands will get the FreeDOS file and the .ROM file.
cd ~/usbbiosfiles && checka="yes"
if [ "$checka" = "yes" ]
then
echo "Changing to the usbbiosfiles directory... OK"
else
echo "Could not Change to the usbbiosfiles directory"
echo "look above \for \info"
echo "Fix the problem and run this scrip agin"
echo ""
echo "removeing directory usbbiosfiles..."
echo ""
rm -r ~/usbbiosfiles
exit
fi
wget "http://www.fdos.org/bootdisks/autogen/FDOEM.144.gz" && check2="yes"
if [ "$check2" = "yes" ]
then
echo "Download of FreeDOS... OK"
else
echo "Could not Download FreeDOS"
echo "look above \for \info"
echo "Fix the problem and run this scrip agin"
echo ""
echo "removeing directory usbbiosfiles..."
echo ""
rm -r ~/usbbiosfiles
exit
fi
wget "http://ubuntuforums.org/attachment.php?attachmentid=78460&d=1216648756" && check3="yes"
if [ "$check3" = "yes" ]
then
echo "Download of the BIOS.ROM \file... OK"
else
echo "Could not Downlad the BIOS.ROM \file"
echo "look above \for \info"
echo "Fix the problem and run this scrip agin"
echo ""
echo "removeing directory usbbiosfiles..."
echo ""
rm -r ~/usbbiosfiles
exit
fi
# The next comand will name the .ROM file to the right name.
mv ~/usbbiosfiles/attachment.php?attachmentid=78460\&d=1216648756 ~/usbbiosfiles/06CN29WW.bios.update.tar.bz2 && check4="yes"
if [ "$check4" = "yes" ]
then
echo "Renameing of the BIOS.ROM \file... OK"
else
echo "Could not rename the BIOS.ROM \file"
echo "look above \for \info"
echo "Fix the problem and run this scrip agin"
echo ""
echo "removeing directory usbbiosfiles..."
echo ""
rm -r ~/usbbiosfiles
exit
fi
echo ""
# The next two comands set the variables. DEVX for the path i.e. /dev/xxx and MOUNTX for the mount point i.e. /media/xxx
verify="n"
while [ "$verify" != y ]
do
echo "You will need to know the Mount Point and the dev Path. You will also need to \make sure the File System \type is vFAT, FAT16 or FAT32."
echo ""
echo "With the USB Thumb Drive unpluged, Open another shell and run the comand df -T Then plug \in the USB Thumb Drive and run the comand df -T one \more time. The new device listed is the USB Thumb Drive. Note the Mount Point and The dev Path and the File system Type i.e. vFAT... If the File System \type is not vFAT, FAT16 or FAT32 you will need to fromat it with gparted. You may want to format the USB Thumb Drive anyway just to \make sure. In any \case delete all files and directorys on the USB drive before you go any ferther with this program."
echo ""
printf "Enter the dev path the USB Thumb Drive is at?"
read DEVX
echo ""
echo "Are you sure $DEVX is the dev path of the USB Thumb Drive... y or n?"
read verify
done
echo ""
verify="n"
while [ "$verify" != y ]
do
printf "What is the Mount Point of the USB Thumb Drive?"
read MOUNTX
echo ""
echo "Are you sure $MOUNTX is the Mount Point of the USB Drive... y or n?"
read verify
done
echo ""
install-mbr --enable A1 --partition 1 --force --timeout 0 $DEVX && check5="yes"
if [ "$check5" = "yes" ]
then
echo "Installing MBR on USB Thumb Dirve... OK"
else
echo "Could not install MBR on USB Thumb Drive"
echo "look above \for \info"
echo "Fix the problem and run this scrip agin"
echo ""
echo "removeing directory usbbiosfiles..."
echo ""
rm -r ~/usbbiosfiles
exit
fi
tar xjf ~/usbbiosfiles/*.tar.bz2 && check7="yes"
if [ "$check7" = "yes" ]
then
echo "Unpacking BIOS.ROM file... OK"
else
echo "Could not unpack BIOS.ROM file"
echo "look above \for \info"
echo ""
echo "Reformat the USB Stick to FAT32 with gparted"
echo "Fix the problem and run this scrip agin"
echo ""
echo "removeing directory usbbiosfiles..."
echo ""
rm -r ~/usbbiosfiles
exit
fi
gunzip ~/usbbiosfiles/FDOEM.144.gz && check8="yes"
if [ "$check8" = "yes" ]
then
echo "Unpacking FreeDOS files... OK"
else
echo "Could not unpack FreeDOS files"
echo "look above \for \info"
echo ""
echo "Reformat the USB Stick to FAT32 with gparted"
echo "Fix the problem and run this scrip agin"
echo ""
echo "removeing directory usbbiosfiles..."
echo ""
rm -r ~/usbbiosfiles
exit
fi
mkdir ~/usbbiosfiles/fdoem144 && check9="yes"
if [ "$check9" = "yes" ]
then
echo "Made directory fdoem144 in direcoty usbbiosfiles... OK"
echo ""
echo "Going to \sleep \for 5secs"
else
echo "Could not make directory fdoem144 in usbbiosfiles directory"
echo "look above \for \info"
echo ""
echo "Reformat the USB Stick to FAT32 with gparted"
echo "Fix the problem and run this scrip agin"
echo ""
echo "removeing directory usbbiosfiles..."
echo ""
rm -r ~/usbbiosfiles
exit
fi
modprobe loop && sleep 5 && check0="yes"
if [ "$check0" = "yes" ]
then
echo "Modprobeing loop... OK"
else
echo "Could not \modprobe loop"
echo "look above \for \info"
echo ""
echo "Reformat the USB Stick to FAT32 with gparted"
echo "Fix the problem and run this scrip agin"
echo ""
echo "removeing directory usbbiosfiles..."
echo ""
rm -r ~/usbbiosfiles
exit
fi
mount -o loop ~/usbbiosfiles/FDOEM.144 ~/usbbiosfiles/fdoem144 && check10="yes"
if [ "$check10" = "yes" ]
then
echo "Mounting FreeDOS on the fdoem144 directory... OK"
else
echo "Could not \mount FreeDOS on the fdoem144 directory"
echo "look above \for \info"
echo ""
echo "Reformat the USB Stick to FAT32 with gparted"
echo "Fix the problem and run this scrip agin"
echo ""
echo "removeing directory usbbiosfiles..."
echo ""
rm -r ~/usbbiosfiles
exit
fi
cp ~/usbbiosfiles/fdoem144/* $MOUNTX && check11="yes"
if [ "$check11" = "yes" ]
then
echo "Copying FreeDOS files to $MOUNTX... OK"
else
echo "Could not copy FreeDOS files to $MOUNTX"
echo "look above \for \info"
echo ""
echo "Reformat the USB Stick to FAT32 with gparted"
echo "Fix the problem and run this scrip agin"
echo ""
echo "removeing directory usbbiosfiles..."
echo ""
rm -r ~/usbbiosfiles
exit
fi
cp ~/usbbiosfiles/*.ROM $MOUNTX && check12="yes"
if [ "$check12" = "yes" ]
then
echo "Copying BIOS.ROM files to $MOUNTX... OK"
else
echo "Could not copy BIOS.ROM files to $MOUNTX"
echo "look above \for \info"
echo ""
echo "Reformat the USB Stick to FAT32 with gparted"
echo "Fix the problem and run this scrip agin"
echo ""
echo "removeing directory usbbiosfiles..."
echo ""
rm -r ~/usbbiosfiles
exit
fi
sync && check13="yes"
if [ "$check13" = "yes" ]
then
echo "Runing the syncing command... OK"
else
echo "Could not run the syncing command"
echo "look above \for \info"
echo ""
echo "Reformat the USB Stick to FAT32 with gparted"
echo "Fix the problem and run this scrip agin"
echo ""
echo "removeing directory usbbiosfiles..."
echo ""
rm -r ~/usbbiosfiles
exit
fi
umount ~/usbbiosfiles/fdoem144 && check14="yes"
if [ "$check14" = "yes" ]
then
echo "Unmounting of FreeDOS... OK"
else
echo "Could not unmount FreeDOS"
echo "Look above for errors or problems reported and fix the problem"
echo ""
echo "removeing directory usbbiosfiles..."
echo ""
echo "Reformat the USB Stick to FAT32 with gparted"
echo "Fix the problem and run this script agin"
rm -r ~/usbbiosfiles
exit
fi
verify="n"
while [ "$verify" != y ]
do
printf "Do you see any errors... yes or no?"
read AN2
echo ""
printf "You answered... $AN2 to errors. Is this correct... y or n?"
read verify
done
echo ""
if [ "$AN2" == "yes" ]
then
echo "User Repoted... Error"
echo "Look above for errors or problems reported and fix the problem"
echo ""
echo "removeing directory usbbiosfiles..."
echo ""
echo "Reformat the USB Stick to FAT32 with gparted"
echo "Fix the problem and run this script agin"
rm -r ~/usbbiosfiles
exit
else
echo "Success"
echo "I did a lot of error checking too and didnt find anything"
echo ""
echo "Go get a pen and paper to write down these instructions"
printf "Then hit the Enter to continue"
read WAIT
echo ""
echo "Now leave the USB Thumb Drive pluged into your computer and Reboot. When the Lenovo Logo POST screen appears hit F2 to enter the CMOS setup utility. Go over to BOOT tab and go down to HardDrive \(Not Boot Order) \then \select the USB Thumb Drive as the 1st hard drve. Then F10 and yes to save changes. Your compter will reboot agin. Then when the Lenovo Logo POST Screen appers on reboot hit F4 to enter the BIOS FLASHING program. The USB Thumb Drive will be seen as the C drive \in the list on the Left, Select it. Then \select the .ROM \file \in the list on the Right and start the BIOS FLASH. \(NOTE Your hart may stop beating... This is normal) Pray to any God you know of and your computer should restart just like normal. Hit F2 and the BIOS will now stay it is 06CN29WW. You will need to \set the boot order to the way you like it and other things \if you need to because they have been changed to the default."
fi
echo ""
echo "End of script"
Last edited by hunterthomson (2008-08-10 11:17:47)Personally..... (this is just how I would have written it - if it works, then it's good enough for me though )
I would change this whole block:
verify="n"
while [ "$verify" != y ]
do
printf "Do you have mbr installed... yes or no?"
read AN1
echo ""
printf "You answered... $AN1 I have installed mbr. Is this correct... y or n?"
read verify
done
echo ""
if [ "$AN1" == "no" ]
then
echo "Install mbr now. Then run this script agin"
exit
else
echo "contunuing script"
fi
To this much shorter code:
MBR='/usr/bin/install-mbr' # Or where ever you expect it to be
if [ ! -x $MBR ] ; then
echo "mbr doesn't appear to be installed."
echo "If it is installed, check it's location, make sure it's executable and then make sure the MBR variable in this script is correct"
exit 1
fi
I wouldn't have used the checkXX variables for each stage:
mkdir ~/usbbiosfiles
if [ $? != 0 ] ; then
#failed
echo "Could not \make directory usbbiosfiles"
echo "look above \for \info"
echo "Fix the problem and run this scrip agin"
exit 1
else
echo "Made directory usbbiosfiles... OK"
fi
There is an issue with the way you do your verifications - the user can never get out unless they answer 'y' or hit CTRL+C. Something like this gives them options:
verify="n"
while [ "$verify" != "y" && "$verify" != "n" ]; do
echo "You need to answer 'y'es or 'n'o"
read verify
echo $verify | tr "[:upper:]" "[:lower:]" # This converts the answer to lowercase so replies entered in upper case will still work
done
if [ $verify != 'y' ] ; then
exit 1
fi
One last thing I try to do in scripts... Declare all your binaries as variables at the start of the program, then execute the binary program by using the variable. For example:
# Binaries
TAR='/bin/tar'
CP='/bin/cp'
CHMOD='/bin/chmod'
# Execute tar and chmod the created file
$TAR cvzf /tmp/tarfile.tar.gz /etc/*.conf
$CHMOD 400 /etc/*.conf
This way, it's easy to change the path in future without having to hunt through the script if the paths change, and it also ensures you're calling the programs using the full paths to make sure you're not executing some strange variant or alias that someone has setup. If I use `chmod` 30 times in a script, and the path changes in the future or on a different system (`chmod` is a bad example cause it's highly unlikely to change, but you know what I mean), then all you need to do is update the variable at the start of the script, and it all works again without having to script-hunt and change it 30 times. -
HOW DO I RUN A UNIX BASH SCRIPT FROM JAVA??
HI. Here's a tricky little problem i have. There's a unix bash script that has some commands in it, that manipulate a file. It appends a certain string variable to a file called users. The users file is an ordinary text file.
I know this script to work perfectly, when i invoke it like this directyl from the command line: ./addusers.sh
or even: bash /downloads/selinux/policy/addusers.sh
Now, i have a java program, and its meant to just execute that script. It doesnt throw any Exceptions at runtime. But when i look at the users file, and expect it to have an extra line that was the string variable, the file is UNTOUCHED!
Again, direct command line invocation works, but not from java. Here's what my invocation from java looks like:
Process p = Runtime.getRunTime().exec("bash downloads/selinux/policy/addusers.sh");
The strange thing is, i tried a different bash command. I tried:
Process p = Runtime.getRunTime().exec("mkdir /temporary");
and this worked!
so why not the other one??
I cant figure it out.You say:
bash /downloads/selinux/policy/addusers.sh
And you say in Java:
Process p = Runtime.getRunTime().exec("bash
downloads/selinux/policy/addusers.sh");
As if a leading / would be missing from the Java
version...nyix says:>
...OK sorry about that. i DO have a / in front of the downloads.... section in the java method. So its:
Process p = Runtime.getRunTime().
exec("bash /downloads/selinux/policy/addusers.sh");
HELP please? -
Bash script to dumpstream many files simultaneously with mplayer
hi guys
i have a problem which i´m sure can be solved with the power of bash scripting
unfortunately i´m no bash scripting guru and all my experiments failed so far
the problem:
i have a file in which are links(streaminglinks)
mplayer offers the funtion to dump such a stream with simply issuing
mplayer -dumpstream mms://path/to/video -dumpfile video1
for example.
now i want mplayer to download this streams specified in the links-file automatically.
basically all it required is a bash script which goes through the link file and generates a command like mplay -dumpstream <link> -dumpfile video<n>
(where n is the nth link) and execute it.maybe there a even simpler solutions
well since i´m not that experienced with bashscripting i can´t solve that problem at my self....
i´m grateful for any helphey guys
thx for the two scripts.
my approach was nearly the same as your´s kraluz with the difference that it doesn´t work
but they both have a little blemish
they download the files sequentially not simultaneously
how could that be realised
thx in advance -
Unexpected token `(' in my bash script [Solved]
I've been working on a bash script, and I'm trying to get it to move all directories that are not named certain names to another directory.
EDIT: Fixed the thing papajoke pointed out
#!/bin/bash
mv ~/Downloads/!(folders|pics|docs|code|archives|vids|sounds)/ ~/Downloads/folders/
The command from the script does what I want it to do when I run it from a terminal.
It also works if I run the script as follows:
source script.sh
It doesn't work like this:
bash script.sh
I'm trying to get it to run when I login, and using the running the command with "source" in my MATE Startup Applications doesn't work.
I'm new to bash scripting, any help would be much appreciated. Thanks
Last edited by physicsshark (2015-04-07 20:09:07)Trilby wrote:I've never seen that syntax
You mean the pipes or the bang?
$ touch a.gz b.gz c.txt
$ ls !(*.gz)
c.txt
This works as an alias and from the comeliness commandline, but not in a script.
$ ls -l ~/2
total 16
drwxr-xr-x 2 karol users 4096 Apr 7 03:13 a
drwxr-xr-x 2 karol users 4096 Apr 7 03:07 b
drwxr-xr-x 2 karol users 4096 Apr 7 03:07 c
drwxr-xr-x 2 karol users 4096 Apr 7 03:13 d
$ mv ~/2/!(a|b|c) ~/2/a
$ ls -l ~/2
total 12
drwxr-xr-x 3 karol users 4096 Apr 7 03:14 a
drwxr-xr-x 2 karol users 4096 Apr 7 03:07 b
drwxr-xr-x 2 karol users 4096 Apr 7 03:07 c
$ ls -l ~/2/a
total 4
drwxr-xr-x 2 karol users 4096 Apr 7 03:13 d
Last edited by karol (2015-04-07 01:20:14) -
Cdrip - my cd ripping automation bash script
Some time ago, I wrote a bash script to automate the ripping, encoding, and organization process for my cd collection. I hadn't used it in a while, but recently `axion asked to have a copy, which led me to realize that it was broken in bash 3. So I rewrote it, incorporating some new ideas I had.
Similar projects, like abcde, act more like a frontend for specific tools, whereas CDRip can use any tool at all. You can even set it up to automatically perform filters using sox, burn backups of your albums, or upload files to your jukebox server's ftp once the ripping is complete.
Anyway, I ended up starting a project on sourceforge, including some nice documentation for configuring the script, and I thought this is a perfect time to make an Arch Linux package!
PKGBUILD
pkgname=cdrip
pkgver=0.5.1
pkgrel=1
pkgdesc="An extremely customizable CD ripping script. Looks up album info with FreeDB. Supports any cmdline ripper, encoder, tagger, etc..."
url="http://cdrip.sourceforge.net/"
license="GPL"
depends=('bash' 'wget' 'cd-discid')
backup=(etc/cdrip.conf)
source=(http://dl.sourceforge.net/sourceforge/cdrip/$pkgname-$pkgver.tar.gz)
md5sums=('d0eda52556b321e6b4070a95c82b783e')
build() {
cd $startdir/pkg
mkdir -p usr/bin etc
mv $startdir/src/$pkgname-$pkgver/cdrip usr/bin
mv $startdir/src/$pkgname-$pkgver/cdrip.conf etc
chmod 755 usr/bin/cdrip
chmod 644 etc/cdrip.confi used rip for my ripping encoding when i was using linux for ripping.
-
Spinach (bash script)
Hello,
The other day I was talking in the IRC channel and mentioned a little script I wrote to download packages from the AUR. Somebody wondered how I would update packages... I hadn't thought that far into the future. However, now I have. I whipped up a little bash script. It does only the basics, but I was wondering if somebody could check it over and see if I'm doing anything horrendous. Sorry, the tabbing is messed up in a few places.
Script: http://floft.net/uploads/spinach/spinach (also in the AUR)
Description: http://floft.net/wiki/Scripts.html
As for the name, I was going to name it "tower" since it's amazingly similar to "cower," but I didn't want to cause any confusion. Thus, I named it after a wonderful food.
Note: The goal was to see how small I could make a functional AUR helper... I know there's a lot of perfectly good ones already.
Garrett
Last edited by Floft (2012-06-28 17:44:30)Odd that you would use both curl and wget. curl proves to be far more useful in the long run, doing everything that wget does (and more). Neat idea though. I've toyed with minimalist bash-based AUR helpers, as well as wrapping cower.
-
Managing a potentially large number of bash scripts
Heres the situation, I have a particular bash script that gets called upon each time a certain function on a server occurs. This can occur many, many times and each specific script instance will be unique and do something slightly different.
For example (this is not what the script does), say the script uses wget to download a page, and then download all images associated with that page. The server could call that script, with several different urls (around 50, maximum) at the same time. From a management perspective its a little exhaustive to have 50 seperate terminals setup to monitor 50 seperate script's at the same time. The bash scripts are however, written in such a way that they output a 1-line status message including progress.
My question is, does there happen to be any sort of software to monitor things in this fashion? For example, have each one its own line in a queue style management interface, with several columns for displaying which script, what arguments and the current output of the script?Mr.Elendig wrote:Have the script log to journald or syslog?
This.
http://www.cyberciti.biz/tips/howto-lin … yslog.html -
Sending email using bash script
Hello:
I am working on writing a bash script to notify one or more users by email of certain events. Run from the Terminal command line, and having the script "echo" text of (what would be) a form letter with in-line variable expansion (i.e., ${VARIABLE}), all seems to work as anticipated. Eventually, I want cron to launch this shell script, and send an email to an "on-subnet" user (I have postfix enabled on my Mac, and there are multiple local user accounts).
I found some stuff on the web about sending mail from bash scripts, and so I made a small little test script, that reads like this:
#!/bin/bash
VARIABLE[1]="The 12,345 quick brown foxes "
VARIABLE[2]="jumped over the 67,890 lazy dogs."
mail -s "a test email" jv << EOF
This is a test:
${VARIABLE[1]}
${VARIABLE[2]}
This is the last line of the test message.
EOF
echo "script completed"
It worked... almost... It sent a local email to my postfix mail account that read like this:
This is a test:
The 12,345 quick brown foxes
jumped over the 67,890 lazy dogs.
This is the last line of the test message.
EOF
echo "script completed"
So, I have two questions. First, the easy one (I hope):
How do I delimit the end of the text, that I want to be the message body of the email, from portions of the script that follow said email text?
Next question is a little more involved. You know how, in Mail.app, if you go to Mail Preferences>Accounts>Account Information, you can put multiple email addresses, comma-delimited, in the "Email Address" field? So, if a person entered "[email protected], [email protected], [email protected]" in this field, then, even though (s)he may be at home, and using their home ISP's mail server, (s)he could send an email apparently from either their home, work, or school email address. Of course, the mail headers clearly would show it came from and through their home machine and home ISP, but it would be displayed in the recipient's Mail client viewer as having come from one of [email protected], [email protected], or [email protected].
I'd like to do something similar here, whereby the email (that is being sent to one or more local users' postfix account on my computer) would apparently be sent from "watchdog@localhost" rather than from "jv@localhost" like it seems to do by default. Whatever account the script is run from (or presumbably, whose cron tab is launching the script) is what the "From" address is set to.
I'd rather not create an additional mail account, because I am using Mac OS X built-in accounts for the postfix mailboxes (I don't want to have to maintain a plaintext username:password file in postfix, and I don't want to create an additional user account on the computer).
So, is there a way to specify an alternate "From" username when invoking the mail -s ${SUBJECT} ${RECIPIENT} command in a bash script? Or is there a different, alternate mail command that will let me do so? (please include a description of syntax and how I'd package the above message text for the alternate method).
Thanks in advance, all!Hi j.v.,
The > after EOF is just a typo (or may be added by the Discussion ?) and you must delete it; other > are prompts from the interactive shell. Andy's post shows an interactive use of shell, not a shell script (note the shell prompt % in front of the commands). A typical use of here document may look like
command <<ENDOFDATA
ENDOFDATA
There must be no spaces before and after ENDOFDATA. The word ENDOFDATA can be EOF or any other string which is guaranteed not to appear in the text (the .... in the example above).
You can modify the From: header by using sendmail command (postfix has it as a compatibility interface):
/usr/sbin/sendmail -t <<EndOfMessage
Subject: test mail
To: jv
From: watchdog
This is a test:
${VARIABLE[1]}
${VARIABLE[2]}
This is the last line of the test message.
EndOfMessage
There must be a blank line between the headers and the mail body.
I assume that you send these mails only to users on your local Mac. Please do not send mails to remote users by using the sendmail command unless you know what you are doing completely.
PowerMac G4 Mac OS X (10.4.5)
Maybe you are looking for
-
Cant install osx Mavericks while restoring my Macbook
I planned to restore my mac book pro (2013 model) back to factory settings. After erasing the hard drive i attempted to install the recovery and while downloading osx mavericks it always stops a little after half way. I dont know what to do ive tried
-
Hi I am looking for function module to make sap session bar in windows pulsing. the reason is that when user has few sap sessions open, and in one of them sth happens (my event), this session should be pulsing in order the user to see it. I found FM
-
My mom helped me to create my iTunes account and load it with a 50$ gift card and now I wanted to purchase a one month subscription at the AYI dating web service but apple never let them take money from my account and I was declined,don't know why?
-
SAPRFC - Help with Export parameters
Hi, I need to connect SAP through PHP and I'm using SAPRFC. I have problems when the RFC used EXPORTS (works well with IMPORTS and TABLES). I tried in all ways that I found on the Internet, but not accomplished fix it. In some cases, no receipt data,
-
Colors differences between jpg and raw - Lightroom 4.1
Dear All, I have a doubt on colors and monitor profile. I am using an imac with monitor calibrated with Spyder pro3 and shoot photos with a Canon 500D (RAW+JPG). I recently added a cir polarized filter to my camera, and really satisfied of colors I s