Как добавить строку в конец файла, к которому я могу получить доступ через sudo?

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

Если у Вас есть Motorola vt2142 Vonage, можно просмотреть к, он - IP-адрес. Вход в систему по умолчанию является маршрутизатором/маршрутизатором. Состояние настройки должно дать Вам немного ключа к разгадке относительно того, что продолжается.

Удачи!

6
задан 25 May 2015 в 15:03
5 ответов

Зависит от того, сколько доступа Ваш администратор предоставил Вам через sudo. Самый простой ответ, предполагая, что у Вас есть разрешение сделать так, должен работать "sudo-s", чтобы получить привилегированную оболочку и затем просто сделать Ваш

echo somestring >> test.txt

как 'нормальный'. Если необходимо сделать это automatedly:

sudo /bin/sh -c 'echo somestring >> test.txt'

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

12
ответ дан 2 December 2019 в 23:53
sudo bash -c "echo 'some string' >> test.txt"

Проблема в Вашей исходной попытке состоит в том, что">>" происходит в оболочке, работающей как Вы; удар открывает файл, не независимо от того, что выполняется sudo. В моей версии Вы передаете целую команду включая перенаправление к удару, выполненному sudo.

13
ответ дан 2 December 2019 в 23:53
  • 1
    Вы рассмотрели sudo-s вместо того, чтобы разжечь/bin/sh явно? –  Jeremy L 25 September 2009 в 00:35
  • 2
    Nerdling: В моих системах, " sudo-s" выполняет оболочку, которую Вы указываете, это doesn' t действительно поддерживают сложные вещи мультиаргумента выполнения как это. –  freiheit 25 September 2009 в 00:47
% echo "string" | sudo tee -a test.txt
14
ответ дан 2 December 2019 в 23:53
  • 1
    Имеет побочный эффект повторения строки к stdout, но хороший и короткий... –  freiheit 25 September 2009 в 00:50
  • 2
    если Вы don' t хотят отозваться эхом к " эха stdout; string" | sudo кладут для первого удара test.txt >/dev/null –  Aaron Brown 25 September 2009 в 01:08
  • 3
    действительное значение ' tee' тот весь ' work' сделан в контексте обычного пользователя, и только вывод записан с ' sudo' полномочия. для меня это более важно, чем краткость и больше ' correct' чем другие ответы, хотя они работают потому что. –  akira 25 September 2009 в 01:14
  • 4
    It' s хорошее решение. –  wfaulk 25 September 2009 в 01:32
  • 5
    +1 Это - лучшее решение, потому что основная часть команды выполняется с ограниченным полномочием, и только вывод записан как корень. –  lukecyca 25 September 2009 в 03:01

Вы можете попробовать ex-way:

sudo ex +'$put =\"some string\"' -cwq foo.txt

Это простое редактирование файлов на месте и полезно в скриптах, так что вам не придётся делать никаких обходов оболочки.

0
ответ дан 2 December 2019 в 23:53

Многие рекомендуют для этого tee , но мне не нравится побочный эффект записи в stdout . Альтернативой является cat :

sh some_script.sh | sudo sh -c 'cat >> somefile.txt'

Если бы cat имел аргумент вроде tee флаг -a , это было бы немного handier:

sh some_script.sh | sudo pseudocat -a somefile.txt

Но, к сожалению, нет.

0
ответ дан 2 December 2019 в 23:53

Теги

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