Скопируйте файл и перезапишите существующий файл

Извлечь постороннее использование образов дисков:

hdiutil detach /dev/disk# -force

Я искал способ сделать, это также - наконец нашло путь.

4
26.07.2014, 15:58
3 ответа
ssh host "cd path/to/directory && cp image1.png image2.png"

&& безопаснее, чем ; в случае неудачи cd, например, из-за опечатки: в таком случае cp не будет выполнен вместо того, чтобы, возможно, скопировать неправильный файл.

5
27.01.2020, 20:51

Без sudo команда ssh сервера "cd путь/к/директория && cp image1.png image2.png" не имеет привилегий на chmod разрешения.

Но с sudo это было бы так, но будучи запущенным после ssh, он никогда не получает пароль для него на удаленном сервере, поэтому решение заключается в использовании -S и вводе пароля для sudo следующим образом:

ssh сервер " cd путь/кд/каталог && echo sudo_password | sudo -S chmod 600 image2. png && cp image1.png image2. png"

EDIT:

Однако, как @terdon отметил, нам не нужно менять здесь разрешения, но используйте sudo cp , так что дело доходит до:

ssh сервера " cd путь/к/каталог && эхо- sudo_password | sudo -S cp image1.png image2. png"

или (если вы думаете, что ваш пароль можно прочитать)

ssh server -t " cd path/to/directory && sudo cp image1.png image2.png"

UPDATE: также @terdon предупредил и я добавил это, потому что я думаю, что важно подчеркнуть и сделать акцент на такой возможной реализации:

Я бы действительно удалил это предложение об использовании -S, это не обязательно. и очень опасным (см. комментарии @mikserv и мой ответ). Это также Бессмысленно. Единственное "преимущество", о котором вы упоминаете. труба - дело бахромы, и в большинстве ситуаций можно просто трубачить. вместо сервера. Вы также можете использовать sshpass, как вы предлагали или установили без пассандров. Всевозможные способы, которые не хранят серверный пароль в виде простого текста. - terdon

С одной стороны это хорошо для автоматизации без получения парольных сообщений sudo и, чтобы иметь полностью автоматизированный код/скрипт, вы бы добавили sshpass -p пароль ssh... .

Однако на сервере, где другие могут легко прочитать ваш sudo пароль, предоставленный в виде открытого текста во время сессии ssh, что не рекомендуется с точки зрения безопасности. Итак, чтобы иметь sudo с ssh и быть безопасным использовать ssh -t

ssh -t сервер "cd путь/к/каталог && sudo chmod 600 image2.png && cp image1.png image2". png"

Тем не менее, с помощью -t невозможно передать ssh "sudo command"| команду, например ssh -t сервер "cd path/to/directory && sudo"|grep "text", но это возможно с помощью -S и эхо-пароля, д. g. ssh сервер 'echo password | sudo -S ls -l'| grep 'a'

1
27.01.2020, 20:51

Все, что вам нужно, чтобы подключиться к серверу через ssh и выполнить определенную команду, это ssh "command"

В вашем случае вы хотите скопировать файл (по умолчанию он перезаписывается), поэтому вам нужна команда cp . Он работает как cp / path / to / original / path / to / copy . Теперь вы сказали в своих комментариях, что попытка этого дает вам ошибку отказа в разрешении. Это означает, что вам нужно будет запустить команду от имени пользователя root. Это делается с помощью sudo , поэтому sudo cp / path / to / original / path / to / copy .

Следующая проблема заключается в том, что ssh запускает неинтерактивную оболочку без tty, поэтому sudo не может запросить пароль. Для этого вам нужно будет использовать ssh -t . Итак, собрав все это вместе, вы можете сделать:

ssh -t user@server sudo cp /path/to/image2.png /path/to/image1.png

Не никогда никогда не повторять ваш пароль sudo , как предлагается в другом ответе. Это чрезвычайно опасно, так как это сделает его видимым для всех пользователей, подключенных к системе, и он также будет сохранен в вашем файле истории в виде обычного текста. Это означает, что все, что мне нужно сделать, это grep sudo ~ youruser / .bash_history , и у меня есть ваш пароль и полный доступ к серверу. Таким образом, любой злоумышленник, получивший доступ к серверу, теперь может делать все, что ему заблагорассудится.

1
27.01.2020, 20:51

Теги

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