কিভাবে SSH ব্যবহার করে দূরবর্তী অবস্থান থেকে একটি ফাইল লিখুন


32

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

scp file user@host: /pathtowrite_file

যাইহোক, আমি একটি লিনাক্স মেশিন থেকে অন্য একটি ফাইলে লেখাতে অসুবিধা করছি। এখানে আমি চেষ্টা করেছি:

echo 'Some Text' > /remotefile.txt | ssh user@remotehost

নোটিশ যে আমি পেতে

stdin: একটি tty হয় না

কোনও হারে, রিমোট মেশিনের ফাইলটি 'কিছু পাঠ্য পাঠানো পাঠ্যকে প্রতিফলিত করে না।

উত্তর:


58

দূরবর্তী ফাইলটি তৈরি করতে আপনি "বিড়াল" কমান্ডটি ব্যবহার করতে পারেন।

echo 'Some Text' | ssh user@remotehost "cat > /remotefile.txt"

কিন্তু, আমি রিমোট মেশিনে বিদ্যমান ফাইলটি লিখতে চাই।
suffa

2
রিমোট মেশিনে "বিড়াল & gt; /remotefile.txt" চালানো হয় এবং আপনি যদি বিদ্যমান ফাইলটিতে যোগ দিতে চান তবে আপনি "& gt;" দ্বারা "& gt; & gt;"
Aragorn

@ সোফাঃ আপনি কি কোনও বিদ্যমান ফাইলটিতে যোগ দেওয়ার চেষ্টা করছেন? অথবা আপনি ফাইলটি ওভাররাইট করতে চান তবে এটি ইতিমধ্যে বিদ্যমান থাকলে ব্যর্থ হয়? অথবা কি?
David Schwartz

@ ডেভিড শোয়ার্জ - উভয়। আমি ওভাররাইট করতে চাই, এবং যদি এটি প্রস্থান না করে ব্যর্থ হয় ... তবে, আমি এই মুহুর্তে শুধু যুক্ত করতে চাই।
suffa

কিছু টেক্সট 'echo' | ssh ব্যবহারকারী @ remotehost "tee -a /remotefile.txt" `আমার জন্যও কাজ করেছে।
Simply Seth

7

অন্য উত্তর চেয়ে একটু সংক্ষিপ্ত:

ssh user@remotehost "echo Some Text > /remotefile.txt"

1
সত্য; এটি কাজ করবে - যদি দূরবর্তী ফাইলটিতে পাঠ্যের একক লাইন লেখার সত্যিই সমস্ত OP কাজ করতে চায়। প্রশ্ন কমান্ড একটি প্রমাণ-ধারণা ধারণা মত দেখায়। প্রশ্নটি, "লিনাক্স মেশিন থেকে অন্য একটি ফাইলে একটি ফাইলে লেখা।" যদি ব্যবহারকারী একটি ইচ্ছাকৃত কমান্ড (বা আদেশের ক্রম) চালাতে চায় - এবং কেবল একটি নয় echo - স্থানীয়ভাবে, তারপর আপনার উত্তর সাহায্য করে না, এবং গ্রহণযোগ্য উত্তর এটি করার উপায়।
Scott

@ স্কট একাধিক কমান্ড এই পদ্ধতি ব্যবহার করে সম্ভব। লিনাক্সের বেশিরভাগ লাইক, টিএমটিওউডিডিআই: ssh localhost "echo 'hi'; echo 'hello'; echo 'well, hello there!'
g33kz0r

শান্ত শহরবাসী, ডাউনভোট জন্য ধন্যবাদ। আমি আসলে আমার বিন্দু অ্যাড্রেসিং চেয়ে সহজ? পিএস আপনার মন্তব্য কোন ধারনা করে তোলে।
g33kz0r

ঠিক আছে, আপনি প্রয়োজন আরো সমালোচনা? (1) কেন পৃথিবীতে আপনি বলছেন ssh localhost? এটা শুধু পানি নষ্ট করছে, পরিষ্কার করে না। (2) আপনার পরিবর্তিত উদাহরণে পুনঃনির্দেশ দেখানো না করে, কমান্ডগুলিকে কীভাবে গোষ্ঠীভুক্ত করবেন তা জানার প্রশ্ন করুন এবং একাউন্টে সমস্ত আউটপুট প্রেরণ করুন। ... (Cont'd)
Scott

(Cont'd) ... (3) আপনি আমার পয়েন্ট মিস করেছেন, ফ্রেজ "একক লাইন" ফোকাস করে। আমার বক্তব্য ছিল যে ওপি হয়তো আরো কিছু জটিল কাজ লেখতে চাইবেন পরিচিত টেক্সট দূরবর্তী ফাইল থেকে - তিনি একটি চালাতে চান হতে পারে স্থানীয় কমান্ড এবং রিমোট ফাইল আউটপুট পাঠান, হিসাবে command (localhost) > file (remotehost)। আপনি সাধারণ ক্ষেত্রে ঠিক করার জন্য আপনার উত্তর মানিয়ে নিতে পারেন, তাই দয়া করে।
Scott

5

এটা ব্যবহার করা সম্ভব DD একটি ফাইল যোগ করুন। রিমোট হোস্টের আউটপুট পুনঃনির্দেশনাটি যদি সম্ভব না হয় তবে হয়ত একটি বিট অস্পষ্ট কিন্তু কার্যকর।

cat ~/.ssh/id_rsa.pub | ssh user@remote.host 'dd of=.ssh/authorized_keys oflag=append conv=notrunc'

এই উদাহরণটি আপনার সর্বজনীন কীটিকে দূরবর্তী হোস্টে অনুমোদিত_keys ফাইলে যুক্ত করে।

(সূত্র: http://www.rsync.net/resources/howto/ssh_keys.html )


1

এটি একটি ম্যাকে আপনার ক্লিপবোর্ডের সামগ্রীগুলি গ্রহণ করবে এবং এটি দূরবর্তীভাবে একটি ফাইলের শেষে যুক্ত করবে:

pbpaste | ssh root@my.machine.remote 'cat >> ~/.ssh/authorized_keys'

এটি আপনাকে রিমোট হোস্টে একটি ফাইলের শেষে লিখতে (অ্যাডেন্ড) করতে দেয়:

echo "Append string to file" | ssh root@my.machine.remote 'cat >> ~/.ssh/authorized_keys'

0

যদি একাধিকবার ব্যবহার করা হয় তবে এই কোডটি ব্যবহার করা সহজ হতে পারে। "Sshpass" টুল দিয়ে, ssh আপনাকে স্ক্রিপ্টের প্রতিটি আমন্ত্রণের জন্য একটি পাসওয়ার্ডের জন্য প্রম্পট করবে না। (যদি না আপনি এটি গোপন রাখা প্রয়োজন, তাহলে এটি ব্যবহার না করে ভাল)

Sshpass সম্পর্কে আরও তথ্যের জন্য: https://stackoverflow.com/questions/12202587/automatically-enter-ssh-password-with-script

#!/bin/bash

SCRIPT="echo 'nameserver 8.8.8.8' > /etc/resolv.conf"        

if [ "$#" -ne 1 ]; then
        echo "Wrong number of arguments. usage: prog dest_machine"
else
        sshpass -p "root" ssh -o StrictHostKeyChecking=no root@"$1" "${SCRIPT}"
fi

এর চেয়ে বেশি স্বজ্ঞাত কি? এটি মূলত হিসাবে একই g33kz0r এর উত্তর (প্রায় দুই বছর আগে), প্লাস কিছু ঘন্টাধ্বনি এবং whistle যে বিশেষ করে স্পষ্ট নয়। অন্তত আপনি যোগ করেছেন স্টাফ ব্যাখ্যা।
Scott

যদি আপনার স্ক্রিপ্ট অনেকগুলি আর্গুমেন্টের সাথে আহ্বান করা হয়, তবে এটি এমন একটি ত্রুটির বার্তা প্রদান করে যা বলে অতি অল্প আর্গুমেন্ট।
G-Man

হ্যাঁ এটা আপনি ঠিক যে প্রায় একই। এটি যোগ করা এক জিনিস হল এটি ব্যবহার করা আরও সহজ (যদি একাধিকবার প্রয়োজন হয়)। এবং হ্যাঁ ত্রুটি বার্তা ভাল না, আমি এটা ঠিক করা হবে।
sergeyrar

0

আপনি সহজেই ব্যবহার করতে পারেন vi অথবা nano অথবা pico সম্পাদক:

# Just replace "vi" with "nano" or "pico" if you want to use them.
vi remotefile.txt

যাইহোক, আপনি তারপর লিখতে হবে Some Text নিজের মধ্যে এডিটরতে, তাই এই প্রক্রিয়াটি সত্যিই ব্যাচ-সামঞ্জস্যপূর্ণ নয়।


-1

নীচের একটি স্ক্রিপ্ট তৈরি করুন:

# !/bin/bash

read -p "Enter target server IP : " server
echo "Enter root password for $server : " ; read -s password

yum install sshpass -y

sshpass -p "$password" ssh -o strictHostKeyChecking=no root@$server echo "your text goes here" >> /remotefile.txt

আমি ডাউনভোট দেখি - সম্ভবত এমন কেউ থেকে যারা নতুন কমান্ড ব্যবহার করবে না yum একটি খুব ভাল কারণ ছাড়া। এই উত্তর কিভাবে কিন্তু কেন না দেখায়। (মুহূর্তের জন্য ডাউনভোট বাতিল করা হচ্ছে - আমি আশা করি আপনি আরো প্রসঙ্গ সরবরাহ করতে এটি সম্পাদনা করবেন)
SDsolar
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.