Visit Our UNIX and Linux User Community


Automated FTP script using .netrc to multiple FTP servers


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Automated FTP script using .netrc to multiple FTP servers
# 1  
Old 05-17-2009
Automated FTP script using .netrc to multiple FTP servers

Hi all,

I'm using the following script to automated ftp files to 1 ftp servers

host=192.168.0.1

/usr/bin/ftp -vi >> $bkplog 2>&1 <<ftp
open $host
bin
cd ${directory}
put $files
quit
ftp

and the .netrc file contain

machine 192.168.0.1
login abc
password 12345

What i would like to achieve is to ftp files to more target servers.

The easiest option would be to add the second server in .netrc

machine 192.168.0.1
login abc
password 12345

machine 192.168.0.2
login ab
password 12345

and modify the script

host=192.168.0.1
host1=192.168.0.2

/usr/bin/ftp -vi >> $bkplog 2>&1 <<ftp
open $host
bin
cd ${directory}
put $files ${files##*/}
quit
ftp

/usr/bin/ftp -vi >> $bkpg 2>&1 <<ftpj
open $host1
bin
cd ${directory}
put $files ${files##*/}
quit
ftpj

Can you think of another solution of changing the script, let's say

if host1 is set than use

/usr/bin/ftp -vi >> $bkpg 2>&1 <<ftpj
open $host1 & $host
bin
cd ${directory}
put $files ${files##*/}
quit
ftpj

if not use only

/usr/bin/ftp -vi >> $bkpg 2>&1 <<ftpj
open & $host
bin
cd ${directory}
put $files ${files##*/}
quit
ftpj

Regards
# 2  
Old 05-17-2009
you can parse the .netrc file the use a loop to go through the machines. If you have Python on your system, here's an alternative
Code:
#!/usr/bin/env python
import ftplib
machine=[]
login=[]
password=[]

def upload(ftp, file): 
    ftp.storbinary("STOR " + file, open(file, "rb"), 1024)
        
for line in open("/etc/.netrc"): #read netrc file
    old=line.strip()
    line=line.strip().split()
    if old.startswith("machine"): machine.append(line[-1])
    if old.startswith("login"): login.append(line[-1])
    if old.startswith("password"): password.append(line[-1])
for i in range(len(machine)):
    try:
        ftp = ftplib.FTP(machine[i])
        ftp.login(login[i],password[i])
    except Exception,e:
        print e
    else:
        ftp.cwd("incoming")
        upload(ftp, "test.txt")

similarly done using shell scripting, parse the netrc for machines/login/password and using loop to go through them
# 3  
Old 05-17-2009
or with bash you need to create only to files -- targes = your ip addresses -- and --- commands=you commands

from my point of view , is this one of the fastest

#!/bin/bash

IFS=$'\n'


echo "==============================="
echo " Please enter you enable pass! "
echo "==============================="

read -s -p "password: " pass
printf "%b" "\n"

cmd=`cat commands`

for ip in `cat targets`

do
echo "connect to $ip" >> log-uniq
printf "USERNAME\r\n$pass\r\n$cmd\r\n" | netcat $ip 21 | tee -a log-uniq
done
# 4  
Old 06-10-2009
Thank you all for your help!
Finally i've decided to use the 2nd option where i've added a loop

Code:
 
if [-z $host1]
     then
 /usr/bin/ftp -vi >> $backupLog 2>&1 <<startftp
 open $host
 bin
 cd ${directory}
 put $files ${files##*/}
 quit
startftp
 
echo ${files##*/} Ftpd to $host >> $backupLog
(( i=i+1 ))
 
    else
      for p in $host $host1
       do
/usr/bin/ftp -vi >> $backupLog 2>&1 <<gg
 open $p
 bin
 cd ${directory}
 put $files ${files##*/}
 quit
gg
      done
  fi
 
echo ${files##*/} Ftpd to $p >> $backupLog
(( i=i+1 ))
 
done
 
echo >> $backupLog

# 5  
Old 06-10-2009
Just have one line per machine in the .netrc file.
This also stops the password appearing in a "ps" display.

Code:
machine 192.168.0.1 login abc password 12345
machine 192.168.0.2 login ab password 12345

Code:
/usr/bin/ftp -vi $host >> $bkpg 2>&1 <<ftpj
bin
cd ${directory}
put $files ${files##*/}
quit
ftpj


Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Deleting local server file from automated FTP script

Hi, I want to delete a file on the local server, while connected to remote server through FTP. I am using the below code for this $FTP_CMD -v -n $HOST <<*! >> $LOGFILE 2>&1 user $USER $PASSWORD cd $DIR ... (11 Replies)
Discussion started by: jhilmil
11 Replies

2. Shell Programming and Scripting

Automated FTP without plaintext user/password in script

hi , i am a still beginner in unix and specially in ftp i've written this script but my admin asked me that he don't want to see in my ftp neither user neither password , so i've created .netrc file where in it i've put machine name , user and pass but still included in my script , so if someone... (19 Replies)
Discussion started by: semaan
19 Replies

3. Shell Programming and Scripting

Automated script to look for files in FTP Server location.

suppose one file comes in one sever location on MOnday.we have to write a script to automatically get that files and put it in different server location. ---------- Post updated at 10:28 AM ---------- Previous update was at 10:27 AM ---------- Please help me on this (2 Replies)
Discussion started by: sonam273
2 Replies

4. Shell Programming and Scripting

Script ftp multiple servers

Hi guys , i have 1 problem and no find what is the problem...:confused:, and .netrc is configured and correct permissions... REMOTE="/home/user" LISTADO=`cat /root/home/user/LISTADO.txt` MACHINE=$(echo $i|awk 'FS="|" {print $1}') for i in $LISTADO do ftp $MACHINE <<TER passive prompt... (2 Replies)
Discussion started by: Esquizo000
2 Replies

5. Shell Programming and Scripting

Help needed with automated FTP script

Hi, Ok, i'm trying to automate sending a DB backup from a linux box to a remote Windows PC via FTP. I can connect, send the file and create a folder, however I require that the backups be differentiated by date. Here is what my script looks like: open *.*.*.* user username password lcd... (4 Replies)
Discussion started by: leimrod
4 Replies

6. IP Networking

Automated ftp for Multiple files

I have seen the script posted yesterday for automated ftp Can we do some thing like ftp ing multiple files in one script Example input.txt has all files names to be ftped input.txt ------ a.tar b.ccp c.perl i need to ftp all the files present in input.txt i tried something like... (0 Replies)
Discussion started by: pbsrinivas
0 Replies

7. UNIX for Advanced & Expert Users

automated ftp script from unix -date range of files

Hi , I need some help to finish my ftp script and i need to find the last one weeks of fles updated in the sepecific directory and see those end with Z and ftp them to my backup server. Any help is appreciated. Thanks, Ravi :) (1 Reply)
Discussion started by: koduri0475
1 Replies

8. Programming

automated ftp script from unix -date range of files

Hi , I need some help to finish my ftp script and i need to find the last one weeks of fles updated in the sepecific directory and see those end with Z and ftp them to my backup server. Any help is appreciated. Thanks, Ravi :) (1 Reply)
Discussion started by: koduri0475
1 Replies

9. UNIX for Dummies Questions & Answers

.netrc multiple ftp jobs to same machine

I have an ftp user, which has been setup to run ftp jobs to a specific machine (different jobs). for the first job i created .netrc in the ftp users home directory and added the appropriate commands machine FTPBOX01 login user1 password xxx macdef init etc etc get file bye I use the... (3 Replies)
Discussion started by: hcclnoodles
3 Replies

10. Shell Programming and Scripting

ftp to multiple servers

Hi folks. I am writing a ksh ftp script. The problem is, I need to transfer the files to several different servers. Is there a way to close a connection and move on to the next in one script or do I need to write a separate script for each one? Thanks, kristy (2 Replies)
Discussion started by: kristy
2 Replies

Featured Tech Videos