Функция Bash к scp файл, не работающий

Если Вы просто хотите изменить конфигурацию программы, типичный метод выполнения, которое должно обновить его conf файл, то отправьте ему сигнал SIGHUP, на который он программируется для ответа путем перезагрузки его conf файла (см. signal(7) ). Как Coren сказал, у Вас обычно есть хранилище программы ее pid в файле в/var/run, когда это запускается так, можно позже отправить ему сигнал.

При необходимости в более сложной связи с программой Вы захотите использовать или FIFO или сокет домена Unix. FIFO (см. fifo(7) и mkfifo(3) ) более просто, но демон может только общаться с единственной управляющей программой. Сокеты домена Unix (см. unix(7) ) более сложны для использования, но можно принять соединения от нескольких клиентов.

2
26.11.2018, 00:52
2 ответа

Не то, чтобы это должно иметь значение, но удаленный путь должен быть /home/username (единственная наклонная черта вправо). И как спутник, на который указывают, заключите Ваш в кавычки ${1} с "${1}".

Я скопировал ту же команду, и она работает, когда я тестирую ее, таким образом, я подозреваю (данный "не регулярный файл" ошибка), что у Вас есть дополнительное пространство между username@long.server.name.company.com: и //home/username.

Другая вещь попробовать состоит в том, чтобы добавить отладку (путем предоставления -v на команде scp), и видят, дает ли это какой-либо ключ к разгадке:

function to_company() 
{
    scp -v "${1}" username@long.server.name.company.com:/home/username 
}
2
27.01.2020, 22:14
  • 1
    Другая мысль - то, что Вы имеете scp искаженный, что делает type scp сказать? –  Drav Sloan 14.08.2013, 22:33
  • 2
    Единственная наклонная черта вправо решена.Спасибо. Как я добавляю отладку? Путем включения операторов эха? –  Bhaskar 14.08.2013, 22:37
  • 3
    Извините я не ясно дал понять, использую -v на scp (я сделаю это более ясным в моем ответе). –  Drav Sloan 14.08.2013, 22:39
  • 4
    Вы знали бы, почему использование дважды режет в сбоях сценария/функции, но когда выполнение его вручную хорошо работает? –  Bhaskar 14.08.2013, 22:42
  • 5
    я удивлен, что он делает честно говоря, делает -v на scp проливает какой-либо свет на проблему? –  Drav Sloan 14.08.2013, 22:49

Вы приближаетесь к этому неправильный путь. Вместо того, чтобы писать обертку оболочки, определите псевдоним хоста в Вашем ~/.ssh/config.

Host work
Hostname long.server.name.company.com
Username bob

Затем для копирования файла в сервер компании:

scp filename.ext work:

Удаленный путь относительно Вашего корневого каталога, таким образом, work: означает то же самое как work:/home/username.


Ваша функция перестала работать при передаче аргумента, который содержит пробел или globbing символы \[?*. Это легко фиксируется путем помещения расширения параметра в двойных кавычках: "$1". Всегда помещайте двойные кавычки вокруг переменной и управляйте заменами.

Другая потенциальная проблема - это // в начале пути может быть интерпретирован особенно. Обычно последовательные наклонные черты в пути эквивалентны одной наклонной черте, но путь, который начинается точно с двух наклонных черт, имеет особое значение в некоторых системах.

0
27.01.2020, 22:14

Теги

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