4

Возможный дубликат:
scp на удаленный сервер с sudo

Каков наилучший способ сделать SCP из одного окна в другое как пользователь sudo. Есть два сервера

Сервер А

10.152.2.10

/home/oracle/export/files.txt

Пользователь: развернуть

Сервер Б

10.152.2.11

/ Главная / оракул / импорт /

Пользователь: развернуть
Пользователь Sudo: /usr /local /bin /tester

все, что я хочу, это скопировать файлы с сервера A на сервер B как пользователь sudo ...

Чтобы сделать это, сначала я обычно регистрируюсь как пользователь развертывания на целевом сервере, а затем переключаюсь как пользователь sudo без пароля.

после того, как SCP скопирует файл, это нормальный способ выполнения этой операции ...

Для того, чтобы auotmate я написал сценарий

#!/bin/sh
ssh deploy@lnx120 
sudo /usr/local/bin/tester "./tester/deploy.sh"

Я сгенерировал закрытый ключ для пользователя развертывания, поэтому он позволяет мне входить в систему как пользователь развертывания без пароля. После выполнения команды sudo пользователь переключится на тестер ...

после этого ничего не происходит .. я имею в виду, что скрипт не выполняется ... есть ли способ сделать это по-другому ...

2 ответа2

10

Вы можете сделать обертку вокруг ssh , вот так:

#!/usr/bin/perl
use strict;
my $added = 0;
$added ||= s/^scp /sudo $&/ for @ARGV;
exec "ssh", @ARGV;

Сделайте его исполняемым и запустите scp следующим образом:

scp -S ./ssh-wrapper somefile anotherfile hostname.domain.tld:path/

Это будет работать только в том случае, если для sudo на удаленном сервере не требуется пароль (или если он кэширован), но лучше, чем ничего.

0

Если я правильно понимаю, вам нужен sudo, потому что файл находится там, где ваш обычный пользователь не имеет доступа? А у вас нет пароля root или вы не хотите его использовать по какой-то причине?

Одним из решений было бы скопировать файл в место, к которому у обычного пользователя есть доступ (и при необходимости также изменить права доступа к файлу), а затем выполнить scp.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .