質問: sudoユーザーとしてscpを実行する方法 重複の可能性: sudoを使用したリモートサーバーへのscp sudoユーザーとして1つのボックスから別のボックスにscpを実行する最良の方法は何ですか。 2つのサーバーがありますサーバーa10.152.2.10/home/oracle/export/files.txtユーザー:デプロイサーバーb10.152.2.11/ home/oracle/import /ユーザー:デプロイ sudoユーザー:/ usr/local/bin/tester私が欲しいのは、sudoユーザーとしてサーバーaからサーバーbにファイルをコピーすることだけです...これを行うには、最初に通常、ターゲットサーバーにデプロイユーザーとしてログインし、次にパスワードなしでsudoユーザーとして切り替えます。そのscpがファイルをコピーした後、これは私がこのアクティビティを実行する通常の方法です...auotmateするために私はスクリプトを書きました#!/bin/sh ssh deploy@lnx120 sudo /usr/local/bin/tester "./tester/deploy.sh" デプロイユーザーの秘密鍵を生成したので、パスワードなしでデプロイユーザーとしてログインできます。 sudoコマンドが実行された後、ユーザーをテスターに切り替えます。その後は何も起こりません..スクリプトが実行されていないことを意味します...これを別の方法で実行する方法はありますか...
回答: 次のように、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がパスワードを必要としない場合(またはパスワードがキャッシュされている場合)にのみ機能しますが、何もないよりはましです。