কীভাবে এক লাইন ব্যবহার করে sftp এ একাধিক কমান্ড প্রেরণ করা যায়


14

নিম্নলিখিত কমান্ডটি sftpএকটি লাইন ব্যবহার করতে একটি কমান্ড প্রেরণ করে:

sftp -o PasswordAuthentication=no user@host" <<<"lcd /home"

কীভাবে sftpএক লাইন ব্যবহার করে একাধিক লাইন প্রেরণ করা যায় । এটি অর্জনের জন্য কি গাড়ীর রিটার্ন বা কিছু সন্নিবেশ করার কোনও উপায় আছে, উদাহরণস্বরূপ:

sftp -o PasswordAuthentication=no user@host" <<<"lcd /home\n cd /myhome\n get file"

sftp -bবাহ্যিক ফাইল তালিকা কমান্ডগুলি লোড হওয়া বিকল্পটি না ব্যবহার করার ধারণাটি ।

উত্তর:


12

আপনি এখানে ব্যবহার করেছেন-স্ট্রিং ( <<<) সিনট্যাক্স থেকে আমার অনুমান যে আপনার শেলটি bash, সুতরাং আপনি ব্যাকস্ল্যাশ-পলায়নযুক্ত অক্ষর ( $'') সহ স্ট্রিংটিও ব্যবহার করতে পারেন :

sftp -o PasswordAuthentication=no user@host <<< $'lcd /home\n cd /myhome\n get file'

পোর্টেবল বিকল্পটি এখানে-নথি:

sftp -o PasswordAuthentication=no user@host <<END
lcd /home
cd /myhome
get file
END

1
<<<প্রথমে zsh দ্বারা প্রবর্তিত হয়েছিল (যদিও এটি দ্বারা অনুপ্রাণিত হয়েছিল rc) এবং পরে ksh93 এবং তারপরে ব্যাশ যুক্ত হয়েছিল।
স্টাফেন চ্যাজেলাস

আপনাকে ধন্যবাদ, @ স্টেফেনচাজেলাস। আমার সত্যিই আমার zshদক্ষতা আরও শক্তিশালী করা দরকার ।
manatwork


2

হ্যাঁ, আপনি কেবল ব্যবহার করতে পারেন echo -e

echo -e "lcd /home\ncd /myhome\nget file" | sftp user@host

3
echoঅত্যন্ত মানহীন - echo -eসর্বত্র একইরকম কাজ করে না, তাই আপনাকে প্রথমে পরীক্ষা করতে হবে। বিকল্পভাবে, কেবলমাত্র এমনটি ব্যবহার করুন printfযা আরও বেশি বহনযোগ্য এবং সর্বত্র একইরকম কাজ করা উচিত।
jw013

1

এটা এড়ানোর করার প্রয়োজন নেই -bডিস্কে ব্যাচ ফাইল লেখার এড়াতে বিকল্প। প্রক্রিয়া বিকল্প ব্যবহার করে আপনি ফ্লাইতে ব্যাচ তৈরি করতে পারেন।

batch() {
  echo lcd /home
  echo cd /myhome
  echo get file
}

sftp -b <(batch) -o PasswordAuthentication=no user@host

0

নেটিভ sftp কমান্ড ব্যবহার করুন

sftp -o passwordAuthentication = কোনও ব্যবহারকারী @ হোস্ট: / হোম / মাইহোম / ফাইল নেই


আপনি যা লক্ষ্য করেননি তা হ'ল lcdএবং cdবিভিন্ন কাজ করুন। আপনি পাথগুলি এমন কিছুতে সংযুক্ত করেছেন যা অস্তিত্বহীন থাকবে।
আন্ডারস্কোর_ডে

0

মাইব্রু, আপনি আপনার কমান্ডগুলিকে এমনি পাইপ করতে পারেন:

echo '
    lcd /home
    cd /myhome
    get file
' | sftp -o PasswordAuthentication=no user@host
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.