Sponsored Content
Top Forums Shell Programming and Scripting Unable to check if file exists on remote server using expect Post 302895456 by temp_user on Tuesday 1st of April 2014 12:44:04 AM
Old 04-01-2014
I was able to solve the issue.Please find below the code

Code:
#/bin/bash

ip_addr=10.10.10.10.
user=root
passwd=Help
filename=test_backup.sh
path=/root/


VAR=$(expect -c "
                    spawn ssh -n -T -o NumberOfPasswordPrompts=3 -o StrictHostKeyChecking=no $user@$ip_addr \"ls $path/$filename\"
                    expect \"*?assword:*\"
                    send -- \"$passwd\r\"
                    expect {
                        \"$path/$filename\" {
                        exit 0
                        }
                        \"ls: $path/$filename: No such file or directory\" {
                        exit 1
                        }
                    }
                    expect eof
                    ")
                echo "$VAR" | grep -q -e "No such file"
                if [ $? -eq 0 ];then
                VAR=$(expect -c 2> /dev/null "
                        spawn scp -q -o NumberOfPasswordPrompts=3 -o StrictHostKeyChecking=no $path/$filename $user@$ip_addr:$path
                        expect \"*?assword:*\"
                        send -- \"$passwd\r\"
                        send -- \"\r\"
                        expect eof
                        ")
                else
                    echo "$filename already exists at ip address $ip_addr at path $path"
                fi

This User Gave Thanks to temp_user For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Check Remote Folder Exists

Hi, I want to sftp some files to a remote directory. Before transferring files i want to check whether the required folder exists. If so copy the files to that folder, else create the folder and copy the files. Thanks in adv (1 Reply)
Discussion started by: borncrazy
1 Replies

2. Shell Programming and Scripting

check if file exists on remote system ?

Hi there, I am designing a software rollout script and need to check if a particular file exists on a remote system something along the lines of if ; then blah blah The above doesnt work but you get the general idea....is there a way I can do this on a single line ?? any help would... (2 Replies)
Discussion started by: hcclnoodles
2 Replies

3. Shell Programming and Scripting

check if remote file exists

Hi Does anybody know how I can check if a file exists on a remote machine i.e. see bellow, this doesn't work by the way and if tried countless variations on this #!/bin/sh hostname=server56 if ; then echo file exists else echo file doesn't exist fi Any help on this would... (2 Replies)
Discussion started by: hcclnoodles
2 Replies

4. UNIX for Dummies Questions & Answers

ftp - check if file on remote exists (skip overriding)

Hello, I have a script that uploads a file from local to remote place using ftp. The problem is that, if on remote host there is a file called the same as the one I want to upload, the ftp program overrides that file. But I don't want to override nothing (even if the remote file is older,... (3 Replies)
Discussion started by: spiriad
3 Replies

5. Shell Programming and Scripting

Check file exists on remote machine.

I am haveing one script haveing one issue with this could any one can reply soon it is very urgent. :p if ssh hcp_ftp@$1 'ls '$2/stop.txt' 1>&2 2>/dev/null'; then exit 1; else scp -p hcp_ftp@$1:$2/VAT*.dat $3 <<EOF EOF cd $3 pwd echo 'About to find file' SOURCE_FILE=$(ls -rt VAT*.dat|tail... (2 Replies)
Discussion started by: marpadga18
2 Replies

6. Shell Programming and Scripting

Check if remote folder exists

Hi, When trying to chk if a folder exists on remote server using the below command (got it from other thread in this forum) "ifvchr@s1.mrix.local '/cygdrive/d/shares/projects\ data\ load/test\ files/$SCPED_FILES$name$code'`]; then echo "Directory exists"; else echo "Directory... (0 Replies)
Discussion started by: funonnet
0 Replies

7. Shell Programming and Scripting

csh Check if file exists on remote system

I've seen this question posed a few times with shell scripting, but have not found anything with csh. I am trying to download multiple txt files from a source using wget. These are archived tornado warning files; however, the files only exist if there were tornado warnings issued that day. I'm... (3 Replies)
Discussion started by: meteorologistks
3 Replies

8. Shell Programming and Scripting

ssh to remote server and check if file exists

Hi everyone, I am trying to figure out a way to ssh to remote server and check if file exists, and if it doesn't I want to leave the script with an exit status of 5. I have the following that I am attempting to use, but it is not returning anything: check() { ssh ${SOURCE_SERV} "ls -l... (4 Replies)
Discussion started by: jimbojames
4 Replies

9. Shell Programming and Scripting

Except script fails to check file exists or not in remote node

Dear members, The following expect script connects to remote node and check for the file "authorized_keys" in directory /root/.ssh in remote node. However the result is always found even if the file exist or doesn't exist. expect { "$fname" { send_user "found\n" } Any idea what is... (4 Replies)
Discussion started by: Sudhakar333
4 Replies

10. UNIX for Beginners Questions & Answers

How to check via SSH and credentials if file on remote server exists?

Hi there, I am sorry to ask that kind of beginner thing, but all the code I found online didnt work for me. All I want to do is: Check via SSH if a File exists on my webserver. The SSH login has to be with username and password. So I would be very thankful if somebody could write the line.... (8 Replies)
Discussion started by: Jens885544
8 Replies
File::Basename(3pm)					 Perl Programmers Reference Guide				       File::Basename(3pm)

NAME
File::Basename - Parse file paths into directory, filename and suffix. SYNOPSIS
use File::Basename; ($name,$path,$suffix) = fileparse($fullname,@suffixlist); $name = fileparse($fullname,@suffixlist); $basename = basename($fullname,@suffixlist); $dirname = dirname($fullname); DESCRIPTION
These routines allow you to parse file paths into their directory, filename and suffix. NOTE: "dirname()" and "basename()" emulate the behaviours, and quirks, of the shell and C functions of the same name. See each function's documentation for details. If your concern is just parsing paths it is safer to use File::Spec's "splitpath()" and "splitdir()" methods. It is guaranteed that # Where $path_separator is / for Unix, for Windows, etc... dirname($path) . $path_separator . basename($path); is equivalent to the original path for all systems but VMS. "fileparse" my($filename, $directories, $suffix) = fileparse($path); my($filename, $directories, $suffix) = fileparse($path, @suffixes); my $filename = fileparse($path, @suffixes); The "fileparse()" routine divides a file path into its $directories, $filename and (optionally) the filename $suffix. $directories contains everything up to and including the last directory separator in the $path including the volume (if applicable). The remainder of the $path is the $filename. # On Unix returns ("baz", "/foo/bar/", "") fileparse("/foo/bar/baz"); # On Windows returns ("baz", 'C:fooar', "") fileparse('C:fooaraz'); # On Unix returns ("", "/foo/bar/baz/", "") fileparse("/foo/bar/baz/"); If @suffixes are given each element is a pattern (either a string or a "qr//") matched against the end of the $filename. The matching portion is removed and becomes the $suffix. # On Unix returns ("baz", "/foo/bar/", ".txt") fileparse("/foo/bar/baz.txt", qr/.[^.]*/); If type is non-Unix (see "fileparse_set_fstype") then the pattern matching for suffix removal is performed case-insensitively, since those systems are not case-sensitive when opening existing files. You are guaranteed that "$directories . $filename . $suffix" will denote the same location as the original $path. "basename" my $filename = basename($path); my $filename = basename($path, @suffixes); This function is provided for compatibility with the Unix shell command basename(1). It does NOT always return the file name portion of a path as you might expect. To be safe, if you want the file name portion of a path use "fileparse()". "basename()" returns the last level of a filepath even if the last level is clearly directory. In effect, it is acting like "pop()" for paths. This differs from "fileparse()"'s behaviour. # Both return "bar" basename("/foo/bar"); basename("/foo/bar/"); @suffixes work as in "fileparse()" except all regex metacharacters are quoted. # These two function calls are equivalent. my $filename = basename("/foo/bar/baz.txt", ".txt"); my $filename = fileparse("/foo/bar/baz.txt", qr/Q.txtE/); Also note that in order to be compatible with the shell command, "basename()" does not strip off a suffix if it is identical to the remaining characters in the filename. "dirname" This function is provided for compatibility with the Unix shell command dirname(1) and has inherited some of its quirks. In spite of its name it does NOT always return the directory name as you might expect. To be safe, if you want the directory name of a path use "fileparse()". Only on VMS (where there is no ambiguity between the file and directory portions of a path) and AmigaOS (possibly due to an implementation quirk in this module) does "dirname()" work like "fileparse($path)", returning just the $directories. # On VMS and AmigaOS my $directories = dirname($path); When using Unix or MSDOS syntax this emulates the dirname(1) shell function which is subtly different from how "fileparse()" works. It returns all but the last level of a file path even if the last level is clearly a directory. In effect, it is not returning the directory portion but simply the path one level up acting like "chop()" for file paths. Also unlike "fileparse()", "dirname()" does not include a trailing slash on its returned path. # returns /foo/bar. fileparse() would return /foo/bar/ dirname("/foo/bar/baz"); # also returns /foo/bar despite the fact that baz is clearly a # directory. fileparse() would return /foo/bar/baz/ dirname("/foo/bar/baz/"); # returns '.'. fileparse() would return 'foo/' dirname("foo/"); Under VMS, if there is no directory information in the $path, then the current default device and directory is used. "fileparse_set_fstype" my $type = fileparse_set_fstype(); my $previous_type = fileparse_set_fstype($type); Normally File::Basename will assume a file path type native to your current operating system (ie. /foo/bar style on Unix, fooar on Windows, etc...). With this function you can override that assumption. Valid $types are "MacOS", "VMS", "AmigaOS", "OS2", "RISCOS", "MSWin32", "DOS" (also "MSDOS" for backwards bug compatibility), "Epoc" and "Unix" (all case-insensitive). If an unrecognized $type is given "Unix" will be assumed. If you've selected VMS syntax, and the file specification you pass to one of these routines contains a "/", they assume you are using Unix emulation and apply the Unix syntax rules instead, for that function call only. SEE ALSO
dirname(1), basename(1), File::Spec perl v5.16.2 2012-10-11 File::Basename(3pm)
All times are GMT -4. The time now is 07:05 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy