Unable to check if file exists on remote server using expect


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Unable to check if file exists on remote server using expect
# 1  
Old 03-28-2014
Unable to check if file exists on remote server using expect

Hi,

I need to check if a file exists on remote server using expect.

Code:
#!/bin/bash
ip_addr=10.10.10.10
user=root
passwd=Help
filename=/root/test
expect -c "
spawn ssh -n -T -o NumberOfPasswordPrompts=3 -o StrictHostKeyChecking=no $user@$ip_addr
expect \"*?assword:*\"
send -- \"$passwd\r\"
expect {
\"ls $filename\" { exp_continue }
$filename { puts found }
timeout { puts \"timed out\" }
}
"

The above code is not working. I need to capture the output and if file does not exist, i need to perform some steps. Any other approach using expect only will be appreciated as I cannot do key sharing.
Please help.
# 2  
Old 03-28-2014
I have not used expect so much, but may be you can pass in the ls command in the ssh itself, like so

Code:
spawn ssh ..... "ls $filename"

I have come across similar situations before, but in my case, I have always been able to add the public key to the remote host so i dont need password, and then I simply

Code:
ssh hostname ls $file
if [ $? -ne 0 ]; then
  echo "handle missing file here"
fi

# 3  
Old 03-29-2014
Thank you linuxpenguin, but i need to do it via expect only, as my task does not allow key sharing.So i have to send the password via expect only.
# 4  
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:
# 5  
Old 04-01-2014
Thanks for the update!
# 6  
Old 04-01-2014
Quote:
Originally Posted by temp_user
Thank you linuxpenguin, but i need to do it via expect only, as my task does not allow key sharing.So i have to send the password via expect only.
If your administrator does not allow you to use keys for security reasons, they will be livid to discover you getting around this limitation with an insecure third-party brute forcing tool.
This User Gave Thanks to Corona688 For This Post:
# 7  
Old 04-02-2014
@Corona688 I understand the point you are making, but then as of now, this has to be implemented like this only. After some time, they will move to key sharing..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. 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

5. 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

6. 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

7. 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

8. 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

9. 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

10. 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
Login or Register to Ask a Question