Як скопіювати файл без використання scp всередині сеансу ssh?


55

Я ввійшов у систему з ssh, і в обох системах немає scp. Як скопіювати файл без використання програми scp.


Чи є netcat (nc) в обох системах? Якщо це так, використовуйте свій ssh ​​сеанс для тунелю TCP-порту та використання nc на цьому порту.

У вас є rsync?
slhck

3
Ви також можете це зробити:ssh user@remotehost cat /path/to/remote/file > /path/to/local/file
n. 'займенники' м.

@nm потрібні котирування (для мене сервер ubuntu)
Іван Чорний,

@nm не працює для мене - файл пошкоджений (я думаю, повідомлення про вхід його порушує).
monnef

Відповіді:


94

Щоб надіслати файл:

cat file | ssh ajw@dogmatix "cat > remote"

Або:

ssh ajw@dogmatix "cat > remote" < file

Щоб отримати файл:

ssh ajw@dogmatix "cat remote" > copy

20
@ggg це зовсім не так. cd /tmp; cat /bin/bash > test; chmod a+x test; diff test /bin/bash; ./testвсе працює добре. У бінарних файлах нічого не властивого "магії". Обидва файли в моєму прикладі порівняли однакові і мають однакову контрольну суму. Це правда, що копіювання та вставлення з вікна терміналу не працюватиме через такі речі, як контрольні послідовності та недруковані символи, але використання таких труб, як ніколи, не йде поруч із терміналом.
Flexo

@Flexo Мені потрібно щось подібне, єдиний виняток - мені потрібно передавати всі jpg з папки. Як можна перебрати через / storage / sdcard1 / * jpg та >файли з однаковою назвою?
Джордж Профенза

2
@GeorgeProfenza вам потрібно буде додати tarв суміш. tar cvf - /path/*.jpg | ssh foo@bar.com "tar xvf -"або щось подібне повинно працювати.
Flexo

Одним із наслідків того, що сказано вище ggg та Flexo, є те, що ви не можете використовувати параметр "-t" для ssh.
mjg123

1
Приємно! Ви також можете використовувати pv замість першого кота, щоб ви отримали pv file | ssh ajw@dogmatix "cat > remote"
смугу

3

Спробуйте це:

cat myfile.txt | ssh me@otherhost 'cat - > myfile.txt' 

2
взагалі немає необхідності в тому, що багато котів дзвонить
Flexo

1

Ви можете використовувати xxdі деякі потворні цитування, щоб скопіювати декілька файлів, а також запустити команди на них та виконати їх:

ssh -t foo@bar.com "
echo $'"$(cat somefile | xxd -ps)"' | xxd -ps -r > "'somefile'"
chmod +x somefile
echo $'"$(cat someotherfile | xxd -ps)"' | xxd -ps -r > "'someotherfile'"
chmod +x someotherfile
./somefile
./someotherfile
"

ах, моя відповідь явно занадто l33t
Aric

-1

Крім передачі файлів на віддалений cat, ви також можете використовувати певний клієнт SFTP для передачі файлів.


+1, але слід зазначити, що ОП намагається уникнути scp, оскільки його немає в системах. Враховуючи це обмеження, ймовірно, що FTP-сервер повинен існувати на приймальному кінці, що робить процес копіювання залежним від програмного забезпечення, ніж того, що зазвичай є за замовчуванням.
Пол Сасик

-1

python3 -m http.serverв тому ж каталозі , вибрати потрібний файл - після цього ви можете curlабо wgetзавантажити або файл з вашим браузером. Зауважте, що за допомогою цієї запущеної команди всі ваші файли з поточного каталогу будуть загальнодоступними, поки ви не натиснете Ctrl+ C.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.