স্ক্রিপ্টের মাধ্যমে sftp সংযোগে কমান্ড কার্যকর করুন


13

এটি একটি খুব প্রাথমিক প্রশ্ন আমি মারাত্মকভাবে একেবারে নতুন এবং এটি কীভাবে করব তা অনুভব করতে পারিনি। দুর্ভাগ্যক্রমে গুগলিং আমাকে কোথাও পেল না।

আমার লক্ষ্যটি হ'ল কোনও সার্ভারে এসফটিপি দিয়ে সংযুক্ত হওয়া, একটি ফাইল আপলোড করা এবং তারপরে সংযোগ বিচ্ছিন্ন করা।

আমার কাছে নিম্নলিখিত স্ক্রিপ্ট রয়েছে:

UpdateJar.sh

#!/bin/bash

sftp -oPort=23 kalenpw@184.155.136.254:/home/kalenpw/TestWorld/plugins
#Change directory on server
#cd /home/kalenpw/TestWorld/plugins

#Upload file
put /home/kalenpw/.m2/repository/com/Khalidor/TestPlugin/0.0.1-SNAPSHOT/TestPlugin-0.0.1-SNAPSHOT.jar

exit

সমস্যাটি হ'ল, এই স্ক্রিপ্টটি একটি sftp সংযোগ স্থাপন করবে এবং তারপরে কিছুই করবে না। সংযোগে আমি নিজে নিজে প্রস্থান টাইপ করলে এটি পুট কমান্ডটি কার্যকর করার চেষ্টা করে তবে sftp অধিবেশনটি বন্ধ হয়ে যাওয়ার কারণে এটি কেবল পুট: কমান্ড খুঁজে পাওয়া যায়নি।

আমি কীভাবে এটি সঠিকভাবে কাজ করতে পারি?

ধন্যবাদ


উত্তর:


15

আপনি এখানে স্ক্রিপ্টটি এখানে নথিতে কমান্ড দেওয়ার জন্য পরিবর্তন করতে পারেন, যেমন,

#!/bin/bash

sftp -oPort=23 kalenpw@184.155.136.254:/home/kalenpw/TestWorld/plugins <<EOF
put /home/kalenpw/.m2/repository/com/Khalidor/TestPlugin/0.0.1-SNAPSHOT/TestPlugin-0.0.1-SNAPSHOT.jar   
exit
EOF

<<মার্কার নাম (দ্বারা অনুসরণ EOF) স্ক্রিপ্ট বলে (নিজে) পর্যন্ত নাম লাইনের শুরুতে পাওয়া যায় নিম্নলিখিত পংক্তিগুলি পাস।


দুর্দান্ত যে এটি আমার প্রয়োজন মতো করেছিল did আমাকে এখানে ডকুমেন্টগুলি পড়তে হবে। দ্রুত উত্তরের জন্য ধন্যবাদ আমি এটি 8 মিনিটে গ্রহণ করব।
kalenpw

কোনও সমস্যা নেই (আমি একটি অনুলিপিটি দেখেছি তবে কেবল এটি "অস্পষ্ট" হিসাবে বন্ধ রয়েছে।
টমাস ডিকি 21

আপনি কি নিশ্চিত যে সার্ভারটি শেল-স্ক্রিপ্টের মন্তব্যে চেপে যাবে না?
alk

এছাড়াও এই পদ্ধতির শেল ধরণের উপর নির্ভর করে।
alk

@ কল করুন স্ক্রিপ্টটি কোনও মন্তব্য সহ এবং ছাড়াই কাজ করে
kalenpw

5

আপনি এর scpপরিবর্তে ব্যবহার করতে পছন্দ করতে পারেন sftpscpসাধারণ cpকমান্ডের মতো আচরণ করে তবে ফাইলগুলি দূরবর্তী হতে পারে:

scp -P 23 /home/kalenpw/.m2/repository/com/Khalidor/TestPlugin/0.0.1-SNAPSHOT/TestPlugin-0.0.1-SNAPSHOT.jar kalenpw@184.155.136.254:/home/kalenpw/TestWorld/plugins

এটি আপনার স্থানীয় মেশিনে থাকা ফাইলটিকে পুরানো-স্কুল এফটিপি-স্টাইল কমান্ড ইন্টারফেস ব্যবহার না করে দূরবর্তী মেশিনের একটি ডিরেক্টরিতে অনুলিপি করে।

ssh, scp, এবং sftpসেবা সাধারণত যদি পাওয়া যায় তাদের কোন হয়; একই ডেমন প্রোগ্রামটি তাদের একসাথে সরবরাহ করে। নীতিগতভাবে সার্ভারের প্রশাসক এগুলির যে কোনওটিকেই অক্ষম করতে বেছে নিতে পারেন, তবে বাস্তবে এটি বিরল।


Scp সম্পর্কে আগে জানতাম না খুব দরকারী মনে হয়। এবং আপনি ঠিক scp
বলেছিলেন

4

কমান্ডগুলি ধারণ করে এমন একটি ফাইল নির্দেশ করতে আপনি -bবিকল্পটিও ব্যবহার করতে পারেন ।sftpsftp

উদাহরণস্বরূপ, আপনি আপনার সমস্ত কমান্ড ফাইলটিতে রাখতে পারেন sftp_commands.txt:

cd /home/kalenpw/TestWorld/plugins
put /home/kalenpw/.m2/repository/com/Khalidor/TestPlugin/0.0.1-SNAPSHOT/TestPlugin-0.0.1-SNAPSHOT.jar
exit

এবং sftpহিসাবে চালান :

sftp -oPort=23 -b sftp_commands.txt kalenpw@184.155.136.254:/home/kalenpw/TestWorld/plugins 

অথবা আপনি কোনও ফাইল ব্যবহার করতে না চাইলে আপনি STDIN এর মাধ্যমেও কমান্ডগুলি পাস করতে পারেন।

থেকে man sftp:

-বি ব্যাচফাইল

ব্যাচ মোড স্টিনের পরিবর্তে একটি ইনপুট ব্যাচফাইল থেকে একাধিক কমান্ড পড়তে পারে। এটিতে ব্যবহারকারীর মিথস্ক্রিয়া না থাকায় এটি অ ইন্টারেক্টিভ প্রমাণীকরণের সাথে ব্যবহার করা উচিত। '-' এর একটি ব্যাচফাইল স্ট্যান্ডার্ড ইনপুট নির্দেশ করতে ব্যবহৃত হতে পারে। নিম্নলিখিত কমান্ডগুলির কোনওটি ব্যর্থ হলে sftp বাতিল করতে হবে: পান, রাখুন, রিজেট করুন, পুনর্নবীকরণ করুন, ln, rm, mkdir, chdir, ls, lchdir, chmod, chown, chgrp, lpwd, df, symlink এবং lmkdir। কমান্ডের ভিত্তিতে একটি '-' অক্ষর দিয়ে কমান্ডটি স্থির করে (উদাহরণস্বরূপ, -rm / tmp / blah *) কমান্ডের ভিত্তিতে ত্রুটির অবসানকে দমন করা যায়।


2

আর একটি বিকল্প কার্ল ব্যবহার করা হবে :

curl -u user -T file.tar sftp://example.com/home/user/
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.