Как удаленно записать в файл с помощью SSH

Я могу скопировать файл на удаленную машину Linux без проблем с

scp file user@host: /pathtowrite_file

тем не менее, у меня возникают трудности с записью в файл с одной машины linux на другую. Вот что я попытался сделать:

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

уведомление, которое я получаю

stdin: не является tty

во всяком случае, файл на удаленной машине не отражает текст, отправленный "Некоторый текст".

17
задан slhck
22.03.2023 13:15 Количество просмотров материала 2417
Распечатать страницу

7 ответов

вы можете использовать команду" cat " для создания удаленного файла.

echo 'Some Text' | ssh user@remotehost "cat > /remotefile.txt"
55
отвечен Aragorn 2023-03-23 21:03

немного короче, чем другой ответ:

ssh user@remotehost "echo Some Text > /remotefile.txt"
6
отвечен g33kz0r 2023-03-23 23:20

можно использовать dd добавить файл. Возможно, немного неясно, но полезно, если перенаправление вывода на удаленном узле невозможно.

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

этот пример добавляет ваш публичный ключ в файл authorized_keys на удаленном хосте.

(источник: http://www.rsync.net/resources/howto/ssh_keys.html)

5
отвечен sdl 2023-03-24 01:37

это займет содержимое буфера обмена на Mac и добавить его в конец файла удаленно:

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

это позволяет записывать (добавлять) в конец файла на удаленном хосте:

echo "Append string to file" | ssh root@my.machine.remote 'cat >> ~/.ssh/authorized_keys'
1
отвечен David 2023-03-24 03:54

Если нужно использовать несколько раз, может быть проще использовать этот код. С помощью инструмента" 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@"" "${SCRIPT}"
fi
0
отвечен sergeyrar 2023-03-24 06:11

вы можете просто использовать vi или nano или pico редактор:

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

однако, вам придется написать Some Text в него в Редакторе самостоятельно, поэтому этот процесс на самом деле не совместим с пакетами.

0
отвечен Riptide9.7 2023-03-24 08:28

создать скрипт, как показано ниже:

# !/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
-1
отвечен Abhilash Mishra 2023-03-24 10:45

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх