Попытка выполнить сценарий (который создает папки) на удаленном сервере: «Permission denied»

sed '1n;s|$| |;:na
    s|\([+-] .*\) [+-]*[0-9]\{1,2\} |\1 NA |
    t na;s| $||'

Судя по данным, которые вы показываете, нет причин, по которым этот маленький sed s ///; функция t не должна работать, я не думаю. (Спасибо jw013 за указание на потенциально пропущенный последний столбец.) Это просто заменяет каждую 1- или 2-символьную числовую строку после +/- , затем в строке с все, что ему предшествовало, и NA , пока больше нечего будет заменять.

Вот еще одна версия без рекурсии, в которой используется старое пространство h sed :

sed '1n;h;s|.*[+-] ||;s|$| |
    s| [+-]*[0-9]\{1,2\} | NA |g
    x;G;s|\([+-] *\).*\n|\1|;s| $||'

Он опирается на тот же маркер и разделяет строку там - первую половину остается нетронутым в h старом пространстве, в то время как он полностью удаляется из пространства шаблонов. Затем мы выполняем глобальную замену для всех 1,2 числовых символьных слов, добавляем в h старое пространство, e x изменяем шаблон и h старые пробелы и удаляем все, что находится между маркером и \ n ewline, вставленным в результате операции добавления.

0
20.03.2019, 14:50
1 ответ

Я вижу несколько возможных причин вашей проблемы. 1. Перед вашей командой нет ssh . Попробуйте это:
ssh stan@192.168.159.133 /root/Documents/script
2. вы входите на удаленный сервер как stan и пытаетесь выполнить скрипт, который находится под пользователем root . Стэн не будет иметь доступа к этому скрипту, даже если вы измените разрешения на файл script .
3. Разрешения спускаются вниз по дереву каталогов с атрибутом x . По умолчанию /root не разрешает доступ к чему-либо ниже него.
ssh stan@192.168.159.133 ls -ld /root
ssh stan@192.168.159.133 ls -ld /root/Documents
Вы, вероятно, увидите что-то вроде этого:
drwxr----- root root /root
Или, что более вероятно, вы получите сообщение об отказе в доступе, потому что Стэн не может заглянуть в /root.
Возможности:
BAD root :192.168.159.133#chmod -R a+rx /root
Лучше переместите /root/Documents/script /tmp и установите разрешения на выполнение для /tmp
ЛУЧШИЙ создайте каталог с именем /share, переместите /root/Documents/script в /share и установите разрешения r+x для /share

0
28.01.2020, 03:59

Теги

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