Как перенести файл с локальной машины на удаленный сервер с нужными разрешениями с помощью шпатлевки

@ibrahim частично прав, но явно неполный.

Изhttps://serverfault.com/questions/247623/iptables-redirect-local-connections-to-remote-system-portследующие работы

iptables -t nat -A OUTPUT -m addrtype --src-type LOCAL --dst-type LOCAL -p tcp --dport 10000 -j DNAT --to-destination 216.58.193.164
iptables -t nat -A POSTROUTING -m addrtype --src-type LOCAL --dst-type UNICAST -j MASQUERADE

sysctl -w net.ipv4.conf.all.route_localnet=1

Тогда я смогу бежать:

curl 216.58.193.164:10000

и получить правильный результат.

Также важно отметить, что при запуске в контейнере вам нужно запустить контейнер с--privileged

0
24.09.2021, 07:31
1 ответ

Фактическое приложение PuTTY представляет собой эмулятор терминала, оно не передает файлы как таковые. Но он поставляется с командами передачи файлов psftpи pscp.

К сожалению, ни psftp, ни pscpне позволяют установить права доступа к файлу , пока файл передается. Параметр -pдля pscpсохранит временные метки файлов, но не разрешения. С помощью psftpкоманды передачи файлов putи mputне имеют возможности указать удаленные разрешения, но есть отдельная команда chmod, которую вы можете использовать для установки разрешений файла после завершения передачи..См. главу 6.2.14 документации PuTTY для получения информации о команде chmodкоманды psftp.

Если у вас есть что-то, что будет автоматически обрабатывать файл сразу после его передачи, обратите внимание, что вы можете сначала передать файл, используя psftpлибо:

  • в другой каталог
  • или во временное имя файла, которое не соответствует тому, что ищет автоматизация

и после завершения передачи установите разрешения с помощью chmodи, наконец, используйте команду mv, чтобы либо переместить файл в каталог, который используется автоматизацией, либо переименовать файл в его фактическое, ожидаемое имя.

(В любой файловой системе в стиле unix -, совместимой с POSIX -, любая операция по перемещению/переименованию файла в пределах одной файловой системы должна быть атомарной операцией , т. е. другие процессы также увидят операцию с файлом. как «еще не сделано» или «полностью закончено», никогда никоим образом не «в процессе». Здесь это свойство используется для того, чтобы автоматизация не увидела ожидаемый файл до тех пор, пока он не будет полностью передан и не будут установлены разрешения на доступ.)

Эта процедура также поможет гарантировать, что автоматизация никогда не поймает файл, который все еще находится в процессе передачи или остался незавершенным из-за сбоя сетевого соединения в середине -передачи.

Например, вы можете создать скрипт, подобный этому:(e.g.filetransfer.scr)

cd /some/directory
mkdir incomplete_xfer
cd incomplete_xfer
put file.txt
chmod a+rw file.txt 
mv file.txt..
cd..
rmdir incomplete_xfer

, а затем запустите его с:

psftp remoteuser@remotehost -b filetransfer.scr

Или, если вы знаете, что удаленный конец ожидает *.xmlфайлы и не будет реагировать на файлы с любым другим суффиксом, вы можете сделать это и так:(альтернативаfiletransfer.scr)

cd /some/directory
put file.xml file_tmp_incomplete_xfer
chmod a+rw file_tmp_incomplete_xfer
mv file_tmp_incomplete_xfer file.xml
0
24.09.2021, 11:22

Теги

Похожие вопросы