Visit Our UNIX and Linux User Community


Please help with Webdav transfer script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Please help with Webdav transfer script
# 1  
Old 03-07-2008
Please help with Webdav transfer script

I need help on a script that syncs a directory with a webdav directory.
For example I have the folders:
./upload/
./upload/client
./upload/client/department
./upload/client2
./upload/client2/department

each of these folders contain docs that need to goto the webdav.
also the client names change frequently so I realy would not want to hard code them in.

Here is my non working script w/ the fat cutout.

**********************************************************************************************
# I create a full listing of file names
cd /tmp/upload/
find "`pwd`" -name "*.*" > /tmp/Full_listing.txt;

#I cut down the file names and turn the spaces into %20 for the webdav
cat /tmp/Full_listing.txt | sed -e 's|/tmp/upload/|/|' -e 's| |%20|'> /tmp/Short_listing.txt;

# here is where I tranfer the files
cat /tmp/Short_listing.txt |while read line; do cadaver -t \""http://10.1.1.142:80/ktwebdav/ktwebdav.php""${line}"\" -U "username" -P "password" -S \"/tmp/upload"${line}"\";done

#here is where I delete the temp files
cat /tmp/Full_listing.txt |while read line; do rm \""${line}"\";done

**********************************************************************************************

the problem is cadaver is exec like this:
cadaver -t "http://10.1.1.142:80/ktwebdav/ktwebdav.php/client/department/doc.txt" -U "username" -P "password" -S "/tmp/upload/client/department/doc.txt"

When it should be this:
cadaver -t "http://10.1.1.142:80/ktwebdav/ktwebdav.php/client/department/" -U "username" -P "password" -S "/tmp/upload/client/department/doc.txt"

How do I cutout the documents name?
I have been working on this for a few days and have been unable to find a solution.

Thanks for reading my way to long post.
# 2  
Old 03-12-2008
final result

Here is what I ended up with if this helps anybody. I modified cadaver to do what I needed. Source is available if requested. This is my .bash_login for cygwin.

#########################################################
#!/bin/sh
#list directories and divide into names and paths
cd /tmp/upload
DIR="."

function list_files()
{
if !(test -d "$1")
then echo $1; return;
fi

cd "$1"


for i in *
do
if test -d "$i" #if dictionary
then
list_files "$i" #recursively list files
cd ..
else
echo "$i"| 'pwd' >> /tmp/dir
echo "/""$i""\"" >> /tmp/files
fi

done
}


if [ $# -eq 0 ]
then list_files .
fi

for i in $*
do
DIR="$1"
list_files "$DIR"
shift 1 #To read next directory/file name
done

# Format the file names and paths for the webdav
cat /tmp/dir | sed -e 's|/tmp/upload/|/|' -e 's| |%20|'> /tmp/Short_listing;
paste -d '' /tmp/dir /tmp/files > /tmp/full_files;
cat /tmp/full_files | sed -e 's| |\\\\ |g' -e 's|/tmp/upload/|/tmp/Upload/|'> /tmp/full_files_spaced;
cat /tmp/files | sed -e 's| |\\\\ |g' -e 's|/||' > /tmp/short_files_spaced;
#start building the cadaver command
cat /tmp/Short_listing |while read line; do echo cadaver -t \""http://10.1.1.142:80/ktwebdav/ktwebdav.php""${line}"\" -U "uname" -P "pass" -D \";done > /tmp/d_commands1
cat /tmp/Short_listing |while read line; do echo cadaver -t \""http://10.1.1.142:80/ktwebdav/ktwebdav.php""${line}"\" -U "uname" -P "pass" -A \";done > /tmp/a_commands1
#delete commands
paste -d '' /tmp/d_commands1 /tmp/short_files_spaced > /tmp/d_commands2
sed '/\*\"/d' /tmp/d_commands2 > /tmp/d_commands3.sh
chmod 775 /tmp/d_commands3.sh
/tmp/d_commands3.sh > /tmp/log/hist.txt
#add commands
paste -d '' /tmp/a_commands1 /tmp/full_files_spaced > /tmp/a_commands2
sed '/\*\"/d' /tmp/a_commands2 > /tmp/a_commands3.sh
chmod 775 /tmp/a_commands3.sh
/tmp/a_commands3.sh >> /tmp/log/hist.txt
# time to clean up
rm /tmp/*
rm /tmp/upload/*
rm /tmp/upload/*/*
rm /tmp/upload/*/*/*
rm /tmp/upload/*/*/*/*
# log what was done
date >> /tmp/log/failed.log
date >> /tmp/log/Conflict.log
date >> /tmp/log/succeeded.log
cat /tmp/log/hist.txt | grep failed >> /tmp/log/failed.log
cat /tmp/log/hist.txt | grep Conflict >> /tmp/log/Conflict.log
cat /tmp/log/hist.txt | grep succeeded >> /tmp/log/succeeded.log
exit
This User Gave Thanks to brazen1445 For This Post:

Previous Thread | Next Thread
Test Your Knowledge in Computers #176
Difficulty: Easy
Apple's first product was the Apple I, invented by Apple co-founder Steve Wozniak.
True or False?

7 More Discussions You Might Find Interesting

1. Web Development

Sending file to WebDav Server

Hi All, I am using a webdav server host name : abc.xyz.com.ak username : user123 password : password123 port : 80 I need to send files stored in my windows system to the server, any idea how to do it. I dont know how to create a url in linux for webdav server using details. (2 Replies)
Discussion started by: prakhar_dubey
2 Replies

2. Shell Programming and Scripting

Webdav automation

Hi, I am required to automate file transfer to a Sharepoint Collection, I have failed in mounting the webdav as a file system using davfs2 so I am investigating Curl and Cadaver. Cadaver is probably the easiest solution, I can successfully connect and transfer files. However can anyone advise... (2 Replies)
Discussion started by: mcclunyboy
2 Replies

3. Linux

Could not open the lock database - Apache WebDAV setup

I configured a WebDAV server using Apache. Here is my configuration: DAVLockDB /var/www/DAVLock.db <Location /majid> AllowOverride None Options +Indexes DAV On AuthUserFile /var/www/users.db AuthName Authentication AuthType Basic <Limit... (1 Reply)
Discussion started by: majid.merkava
1 Replies

4. Debian

webdav share per user ldap authentication

hi all, i have configured Apache with WEBDAV & my aim is sharing outlook calendars because we don't use M$ ExChange. From outlook i did a simple test & am able to share a calendar. I want to create share for each user & then authenticate against LDAP before they can publish their... (0 Replies)
Discussion started by: coolatt
0 Replies

5. OS X (Apple)

Permissions trouble with WebDav

Hello! I need some advice about using WebDav in Mac OS 10.5 My problem is that I mount a WebDav folder in the hard drive pointing to a webdav directory service running under apache (it's Alfresco, if you know it) but the permissions of this directory, when mounted, are only for the user who... (0 Replies)
Discussion started by: osksp
0 Replies

6. Shell Programming and Scripting

upload file to webdav server

Hi all i have a such question this is my shell script my script must upload file to webdav server ////////////////////////////////////////////////////////////////////////////////////////////////////////////// #!/bin/sh ###... (1 Reply)
Discussion started by: knut
1 Replies

7. UNIX for Dummies Questions & Answers

WebDav/davfs mounted file & directory names in all UPPERCASE

Hey, I have a WebDav directory mounted and everything seems fine except for one thing. All file/directory names appear in all UPPERCASE, when in actual fact they are lowercase on the remote machine. For example: foo/bar/baz.html on the remote host, appears on my local machine as... (0 Replies)
Discussion started by: MrMoney
0 Replies

Featured Tech Videos