2011-03-16 15 views
6

के माध्यम से विशेष रूप से निर्देशिका में मौजूद है कि कैसे एक फ़ाइल SSHकैसे एक फ़ाइल खोजने के लिए SSH

उदाहरण के लिए

के माध्यम से विशेष रूप से निर्देशिका में मौजूद है खोजने के लिए: host1 और dir/घर/पेड़/टेस्ट

Host2: - ssh host1 - टेस्ट फ़ाइल मौजूद है या बैश

का उपयोग कर नहीं मिल
+1

क्या आप आवेदन में उपयोग करना चाहते हैं? बूलियन की आवश्यकता है या आप बस ls कमांड –

+0

के साथ जांच सकते हैं हां, मैं इसे किसी एप्लिकेशन में उपयोग करना चाहता हूं और मुझे बूलियन वैल्यू – Tree

उत्तर

9

ssh आदेश के निकास कोड आप इसे पूछने पर अमल करने वापस आ जाएगी:

if ssh host1 stat /home/tree/TEST \> /dev/null 2\>\&1 
then 
    echo File exists 
else 
    echo Not found 
fi 

आप कुंजी authe की आवश्यकता होगी पाठ्यक्रम का ntication सेटअप, तो आप पासवर्ड प्रॉम्प्ट से बचें।

+6

की आवश्यकता है, मुझे 'test -e' या' test -f' का उपयोग करना पसंद है, इसलिए यह बन जाता है: 'ssh host1 test - ई/होम/पेड़/टेस्ट एंड इको फाइल मौजूद है || गूंज नहीं मिला '। –

+1

ssh होस्ट bash -c 'आपका एक-लाइनर शेलस्क्रिप्ट यहां' – Erik

7

यह है कि मैं क्या पढ़ने के बाद कर रहे हैं और यहां सामान बाहर की कोशिश कर रहा समाप्त हो गया है:

FileExists=`ssh host "test -e /home/tree/TEST && echo 1 || echo 0"` 

if [ ${FileExists} = 0 ] 
    #do something because the file doesn't exist 
fi 

अधिक परीक्षण के बारे में जानकारी: http://linux.die.net/man/1/test

1

एरिक के स्वीकार किए जाते हैं जवाब देने के लिए एक विस्तार।

फ़ाइल अपलोड करने के लिए बाहरी प्रक्रिया पर प्रतीक्षा करने के लिए मेरी बैश स्क्रिप्ट यहां दी गई है। फ़ाइल मौजूद होने तक यह वर्तमान स्क्रिप्ट निष्पादन को अनिश्चित काल तक अवरुद्ध कर देगा।

कुंजी-आधारित एसएसएच एक्सेस की आवश्यकता है हालांकि इसे HTTP पर चेक के लिए आसानी से एक कर्ल संस्करण में संशोधित किया जा सकता है।

  • rsync
  • संचरण (धार)

स्क्रिप्ट नीचे:

#!/bin/bash 
set -vx 

#AUTH="[email protected]" 
AUTH="${1}" 
#FILE="/tmp/test.txt" 
FILE="${2}" 

while (sleep 60); do 
    if ssh ${AUTH} stat "${FILE}" > /dev/null 2>&1; then 
     echo "File found"; 
     exit 0; 
    fi; 
done; 
0

कोई ज़रूरत नहीं

यह बाहरी सिस्टम जिनके लिए अस्थायी फ़ाइल नाम का उपयोग के माध्यम से अपलोड करने के लिए उपयोगी है गूंज के लिए इस से अधिक सरल नहीं हो सकता है :)

ssh host "test -e /path/to/file" 
if [ $? -eq 0 ]; then 
    # your file exists 
fi 
संबंधित मुद्दे