У меня есть простой скрипт. Когда сценарий запускается локально с компьютера, он выгружает sql в файл, как и ожидалось:
#!/bin/bash
mysqldump -u user -ppassword db_name > latest.sql
Однако, когда я запускаю этот же сценарий с удаленной машины с использованием файла Rexfile, самое последнее. sql файл, который выводится, имеет длину 0 байт. Вот файл Rexfile:
#!/usr/bin/perl
use Rex -feature => [qw/1.4/];
user 'user';
private_key '/home/user/key.pem';
key_auth;
desc "Dump database";
task "dump_db", sub {
run './dump_mysql.sh', cwd => '/home/user/mysql_dumps';
};
Я запускаю команду rex rex -H 111.222.235.111 dumb-db
. Если я изменю задачу так, чтобы команда запуска была run 'sudo ./dump_mysql.sh'
(обратите внимание на sudo перед командой), это работает. Но я вошел в систему как тот же владелец скрипта dump_mysql.sh
, поэтому я не уверен, почему мне нужно запускать его как sudo. Почему он не генерирует sql вывод при использовании без sudo?