Для python 3.3
CyMySQL https://github.com/nakagami/CyMySQL
У меня есть pip, установленный на моих окнах 7, просто pip установить cymysql
(вам не нужен cython) быстро и безболезненно
Ваша команда не работает, потому что перенаправление выполняется Вашей оболочкой, которая не имеет разрешения записать в /root/test.out
. Перенаправление вывода не выполнено sudo.
существует несколько решений:
Выполнение оболочка с sudo и дают команду ему при помощи -c
опция:
sudo sh -c 'ls -hal /root/ > /root/test.out'
Создают сценарий с Вашими командами и выполняют тот сценарий с sudo:
#!/bin/sh
ls -hal /root/ > /root/test.out
Выполнение sudo ls.sh
. Посмотрите Steve Bennett ответ , если Вы не хотите создавать временный файл.
Запуск оболочка с sudo -s
тогда выполняет Ваши команды:
[nobody@so]$ sudo -s
[root@so]# ls -hal /root/ > /root/test.out
[root@so]# ^D
[nobody@so]$
Использование sudo tee
(если необходимо выйти из много при использовании -c
опция):
sudo ls -hal /root/ | sudo tee /root/test.out > /dev/null
перенаправление к [1 110] необходимо для остановки мишень от выведения до экрана. К [1 120] добавляют вместо того, чтобы перезаписать выходной файл (>>
), используют tee -a
, или tee --append
(последний характерен для [1 116] GNU coreutils).
Спасибо переходит в [1 117] Jd, Adam J. Forster и Johnathan для вторых, третьих и четвертых решений.
Как насчет того, чтобы писать сценарий?
Имя файла: myscript
#!/bin/sh
/bin/ls -lah /root > /root/test.out
# end script
Тогда использует sudo для выполнения сценария:
sudo ./myscript
Заставьте sudo выполнить оболочку, как это:
sudo sh -c "echo foo > ~root/out"
Возможно, Вы предоставленный sudo доступ только к некоторым программам/путям? Тогда нет никакого способа сделать то, что Вы хотите. (если Вы не взломаете его так или иначе)
, Если это будет не иметь место тогда, возможно, можно записать сценарий удара:
cat > myscript.sh
#!/bin/sh
ls -hal /root/ > /root/test.out
Нажатие ctrl + d :
chmod a+x myscript.sh
sudo myscript.sh
Hope это помогает.
Каждый раз, когда я должен сделать что-то вроде этого, что я просто становлюсь корнем:
# sudo -s
# ls -hal /root/ > /root/test.out
# exit
Это - вероятно, не лучший способ, но это работает.
Проблема состоит в том, что команда выполняется под sudo
, но перенаправление выполняется при Вашем пользователе. Это сделано оболочкой и существует очень мало, можно делать с этим.
sudo command > /some/file.log
`-----v-----'`-------v-------'
command redirection
обычные способы обойти это:
Обертка команды в сценарии, который Вы называете под sudo.
, Если команды и/или изменения файла журнала, можно заставить сценарий взять их в качестве аргументов. Например:
sudo log_script command /log/file.txt
Вызов оболочка и передача командная строка в качестве параметра с -c
Это особенно полезно для одного от составных команд. Например:
sudo bash -c "{ command1 arg; command2 arg; } > /log/file.txt"
Кто-то здесь только что предложил мишень sudoing:
sudo ls -hal /root/ | sudo tee /root/test.out > /dev/null
Это могло также использоваться для перенаправления любой команды к каталогу, к которому у Вас нет доступа. Это работает, потому что программа мишени является эффективно "эхом в файл" программа, и перенаправление к/dev/null должно остановить его также выведение на экран для хранения его тем же как исходный изобретенный пример выше.