Я пытаюсь создать небольшую программу python3 для моего друга, которая установит и настроит настройку nessarcary для своего сервера Ubuntu.
Я хочу, чтобы он мог запустить программу, дать некоторые основные сведения и возможность просто оставить программу для запуска.
Дело в том, что для этого мне нужен файл python для отправки пароля в CL при запросе для команд sudo.
Я попытался сделать это для обновления сервера Ubuntu:
os.system('sudo aptitude update && sudo aptitude dist-upgrade')
os.system(password)
После того, как программа запросит пароль с этим:
password=input('Please Enter Your Password')
Но это не сработало. CL просто сидит там, ожидая, что пользователь будет вводить пароль вручную. Это все равно, чтобы обойти это?
Спасибо!
Есть несколько решений, которые автоматически вставляют пароль, но поскольку они видны в открытом тексте на мгновение, это опасно, и вы не должны их использовать. Некоторые методы обсуждаются здесь.
Это правильный способ запуска программы python как root:
import os
import sys
import subprocess
def main():
status, output = subprocess.getstatusoutput("apt-get update")
return status
if __name__ == '__main__':
if os.getuid():
print("This program needs to be run with root privileges,")
print("please use `sudo ./{0}` to execute it".format(*sys.argv))
sys.exit(100)
else:
sys.exit(main())
И метод четкого текста: [ ! d4] Это опасно. Ваш пароль будет видимым для пользователей в системе в ясности. Будьте внимательны, пароли никогда не должны храниться нигде, никогда.
password = "password1"
subprocess.getstatusoutput(
"echo {} | sudo -S apt-get update".format(password))
В соответствующей заметке лучший способ запросить пользователя для пароля - использовать getpass:
import getpass
password = getpass.getpass(prompt='Password: ')
Это не будет напечатайте пароль как на экране во время ввода пользователем, как и следовало ожидать в системе Linux.
import os
import sys
import subprocess
def main():
print("hello world, we're root!")
return 0
if __name__ == '__main__':
if os.getuid():
os.system("sudo python3 " + ' '.join(sys.argv))
sys.exit(100)
else:
sys.exit(main())
Это решение вместо запроса пользователя запускает при необходимости, как root.
Есть несколько решений, которые автоматически вставляют пароль, но поскольку они видны в открытом тексте на мгновение, это опасно, и вы не должны их использовать. Некоторые методы обсуждаются здесь.
Это правильный способ запуска программы python как root:
import os
import sys
import subprocess
def main():
status, output = subprocess.getstatusoutput("apt-get update")
return status
if __name__ == '__main__':
if os.getuid():
print("This program needs to be run with root privileges,")
print("please use `sudo ./{0}` to execute it".format(*sys.argv))
sys.exit(100)
else:
sys.exit(main())
И метод четкого текста: [ ! d4] Это опасно. Ваш пароль будет видимым для пользователей в системе в ясности. Будьте внимательны, пароли никогда не должны храниться нигде, никогда. password = "password1"
subprocess.getstatusoutput(
"echo {} | sudo -S apt-get update".format(password))
В соответствующей заметке лучший способ запросить пользователя для пароля - использовать getpass:
import getpass
password = getpass.getpass(prompt='Password: ')
Это не будет напечатайте пароль как на экране во время ввода пользователем, как и следовало ожидать в системе Linux.
import os
import sys
import subprocess
def main():
print("hello world, we're root!")
return 0
if __name__ == '__main__':
if os.getuid():
os.system("sudo python3 " + ' '.join(sys.argv))
sys.exit(100)
else:
sys.exit(main())
Это решение вместо запроса пользователя запускает при необходимости, как root.
Есть несколько решений, которые автоматически вставляют пароль, но поскольку они видны в открытом тексте на мгновение, это опасно, и вы не должны их использовать. Некоторые методы обсуждаются здесь.
Это правильный способ запуска программы python как root:
import os
import sys
import subprocess
def main():
status, output = subprocess.getstatusoutput("apt-get update")
return status
if __name__ == '__main__':
if os.getuid():
print("This program needs to be run with root privileges,")
print("please use `sudo ./{0}` to execute it".format(*sys.argv))
sys.exit(100)
else:
sys.exit(main())
И метод четкого текста: [ ! d4] Это опасно. Ваш пароль будет видимым для пользователей в системе в ясности. Будьте внимательны, пароли никогда не должны храниться нигде, никогда. password = "password1"
subprocess.getstatusoutput(
"echo {} | sudo -S apt-get update".format(password))
В соответствующей заметке лучший способ запросить пользователя для пароля - использовать getpass:
import getpass
password = getpass.getpass(prompt='Password: ')
Это не будет напечатайте пароль как на экране во время ввода пользователем, как и следовало ожидать в системе Linux.
import os
import sys
import subprocess
def main():
print("hello world, we're root!")
return 0
if __name__ == '__main__':
if os.getuid():
os.system("sudo python3 " + ' '.join(sys.argv))
sys.exit(100)
else:
sys.exit(main())
Это решение вместо запроса пользователя запускает при необходимости, как root.
Есть несколько решений, которые автоматически вставляют пароль, но поскольку они видны в открытом тексте на мгновение, это опасно, и вы не должны их использовать. Некоторые методы обсуждаются здесь.
Это правильный способ запуска программы python как root:
import os
import sys
import subprocess
def main():
status, output = subprocess.getstatusoutput("apt-get update")
return status
if __name__ == '__main__':
if os.getuid():
print("This program needs to be run with root privileges,")
print("please use `sudo ./{0}` to execute it".format(*sys.argv))
sys.exit(100)
else:
sys.exit(main())
И метод четкого текста: [ ! d4] Это опасно. Ваш пароль будет видимым для пользователей в системе в ясности. Будьте внимательны, пароли никогда не должны храниться нигде, никогда. password = "password1"
subprocess.getstatusoutput(
"echo {} | sudo -S apt-get update".format(password))
В соответствующей заметке лучший способ запросить пользователя для пароля - использовать getpass:
import getpass
password = getpass.getpass(prompt='Password: ')
Это не будет напечатайте пароль как на экране во время ввода пользователем, как и следовало ожидать в системе Linux.
import os
import sys
import subprocess
def main():
print("hello world, we're root!")
return 0
if __name__ == '__main__':
if os.getuid():
os.system("sudo python3 " + ' '.join(sys.argv))
sys.exit(100)
else:
sys.exit(main())
Это решение вместо запроса пользователя запускает при необходимости, как root.
Есть несколько решений, которые автоматически вставляют пароль, но поскольку они видны в открытом тексте на мгновение, это опасно, и вы не должны их использовать. Некоторые методы обсуждаются здесь.
Это правильный способ запуска программы python как root:
import os
import sys
import subprocess
def main():
status, output = subprocess.getstatusoutput("apt-get update")
return status
if __name__ == '__main__':
if os.getuid():
print("This program needs to be run with root privileges,")
print("please use `sudo ./{0}` to execute it".format(*sys.argv))
sys.exit(100)
else:
sys.exit(main())
И метод четкого текста: [ ! d4] Это опасно. Ваш пароль будет видимым для пользователей в системе в ясности. Будьте внимательны, пароли никогда не должны храниться нигде, никогда. password = "password1"
subprocess.getstatusoutput(
"echo {} | sudo -S apt-get update".format(password))
В соответствующей заметке лучший способ запросить пользователя для пароля - использовать getpass:
import getpass
password = getpass.getpass(prompt='Password: ')
Это не будет напечатайте пароль как на экране во время ввода пользователем, как и следовало ожидать в системе Linux.
import os
import sys
import subprocess
def main():
print("hello world, we're root!")
return 0
if __name__ == '__main__':
if os.getuid():
os.system("sudo python3 " + ' '.join(sys.argv))
sys.exit(100)
else:
sys.exit(main())
Это решение вместо запроса пользователя запускает при необходимости, как root.
Есть несколько решений, которые автоматически вставляют пароль, но поскольку они видны в открытом тексте на мгновение, это опасно, и вы не должны их использовать. Некоторые методы обсуждаются здесь.
Это правильный способ запуска программы python как root:
import os
import sys
import subprocess
def main():
status, output = subprocess.getstatusoutput("apt-get update")
return status
if __name__ == '__main__':
if os.getuid():
print("This program needs to be run with root privileges,")
print("please use `sudo ./{0}` to execute it".format(*sys.argv))
sys.exit(100)
else:
sys.exit(main())
И метод четкого текста: [ ! d4] Это опасно. Ваш пароль будет видимым для пользователей в системе в ясности. Будьте внимательны, пароли никогда не должны храниться нигде, никогда. password = "password1"
subprocess.getstatusoutput(
"echo {} | sudo -S apt-get update".format(password))
В соответствующей заметке лучший способ запросить пользователя для пароля - использовать getpass:
import getpass
password = getpass.getpass(prompt='Password: ')
Это не будет напечатайте пароль как на экране во время ввода пользователем, как и следовало ожидать в системе Linux.
import os
import sys
import subprocess
def main():
print("hello world, we're root!")
return 0
if __name__ == '__main__':
if os.getuid():
os.system("sudo python3 " + ' '.join(sys.argv))
sys.exit(100)
else:
sys.exit(main())
Это решение вместо запроса пользователя запускает при необходимости, как root.
Есть несколько решений, которые автоматически вставляют пароль, но поскольку они мгновенно отображаются в открытом тексте, они опасны, и вы не должны их использовать. Некоторые методы обсуждаются здесь здесь .
Это правильный способ запуска программы python как root:
import os import sys import subprocess def main (): status, output = subprocess.getstatusoutput («apt-get update») возвращает статус, если __name__ == '__main__': if os.getuid (): print («Эта программа должна запускаться с привилегиями root», ) print («пожалуйста, используйте` sudo ./ {0} `, чтобы выполнить его .format (* sys.argv)) sys.exit (100) else: sys.exit (main ())
И метод четкого текста:
Это опасно . Ваш пароль будет видимым для пользователей в системе в ясности. Будьте внимательны, пароли никогда не должен храниться где-нибудь, когда-либо.
blockquote>password = "password1" subprocess.getstatusoutput ("echo {} | sudo -S apt-get update" .format (password))
В соответствующей заметке лучший способ запросить пользователя для пароля - использовать getpass:
import getpass password = getpass.getpass (prompt = 'Пароль:')
[!d1 5]Это не будет печатать пароль, как на экране во время ввода пользователем, как и следовало ожидать в системе Linux.
import os import sys import subprocess def main (): print («hello world, we are root!») return 0 if __name__ == '__main__': if os.getuid (): os.system ("sudo python3" + '' .join ( sys.argv)) sys.exit (100) else: sys.exit (main ())
Это решение вместо запроса пользователя запускается как root, если необходимо.
Есть несколько решений, которые автоматически вставляют пароль, но поскольку они мгновенно отображаются в открытом тексте, они опасны, и вы не должны их использовать. Некоторые методы обсуждаются здесь здесь .
Это правильный способ запуска программы python как root:
import os import sys import subprocess def main (): status, output = subprocess.getstatusoutput («apt-get update») возвращает статус, если __name__ == '__main__': if os.getuid (): print («Эта программа должна запускаться с привилегиями root», ) print («пожалуйста, используйте` sudo ./ {0} `, чтобы выполнить его .format (* sys.argv)) sys.exit (100) else: sys.exit (main ())
И метод четкого текста:
Это опасно . Ваш пароль будет видимым для пользователей в системе в ясности. Будьте внимательны, пароли никогда не должен храниться где-нибудь, когда-либо.
blockquote>password = "password1" subprocess.getstatusoutput ("echo {} | sudo -S apt-get update" .format (password))
В соответствующей заметке лучший способ запросить пользователя для пароля - использовать getpass:
import getpass password = getpass.getpass (prompt = 'Пароль:')
[!d1 5]Это не будет печатать пароль, как на экране во время ввода пользователем, как и следовало ожидать в системе Linux.
import os import sys import subprocess def main (): print («hello world, we are root!») return 0 if __name__ == '__main__': if os.getuid (): os.system ("sudo python3" + '' .join ( sys.argv)) sys.exit (100) else: sys.exit (main ())
Это решение вместо запроса пользователя запускается как root, если необходимо.
Есть несколько решений, которые автоматически вставляют пароль, но поскольку они мгновенно отображаются в открытом тексте, они опасны, и вы не должны их использовать. Некоторые методы обсуждаются здесь здесь .
Это правильный способ запуска программы python как root:
import os import sys import subprocess def main (): status, output = subprocess.getstatusoutput («apt-get update») возвращает статус, если __name__ == '__main__': if os.getuid (): print («Эта программа должна запускаться с привилегиями root», ) print («пожалуйста, используйте` sudo ./ {0} `, чтобы выполнить его .format (* sys.argv)) sys.exit (100) else: sys.exit (main ())
И метод четкого текста:
Это опасно . Ваш пароль будет видимым для пользователей в системе в ясности. Будьте внимательны, пароли никогда не должен храниться где-нибудь, когда-либо.
blockquote>password = "password1" subprocess.getstatusoutput ("echo {} | sudo -S apt-get update" .format (password))
В соответствующей заметке лучший способ запросить пользователя для пароля - использовать getpass:
import getpass password = getpass.getpass (prompt = 'Пароль:')
[!d1 5]Это не будет печатать пароль, как на экране во время ввода пользователем, как и следовало ожидать в системе Linux.
import os import sys import subprocess def main (): print («hello world, we are root!») return 0 if __name__ == '__main__': if os.getuid (): os.system ("sudo python3" + '' .join ( sys.argv)) sys.exit (100) else: sys.exit (main ())
Это решение вместо запроса пользователя запускается как root, если необходимо.
Есть несколько решений, которые автоматически вставляют пароль, но поскольку они мгновенно отображаются в открытом тексте, они опасны, и вы не должны их использовать. Некоторые методы обсуждаются здесь здесь .
Это правильный способ запуска программы python как root:
import os import sys import subprocess def main (): status, output = subprocess.getstatusoutput («apt-get update») возвращает статус, если __name__ == '__main__': if os.getuid (): print («Эта программа должна запускаться с привилегиями root», ) print («пожалуйста, используйте` sudo ./ {0} `, чтобы выполнить его .format (* sys.argv)) sys.exit (100) else: sys.exit (main ())
И метод четкого текста:
Это опасно . Ваш пароль будет видимым для пользователей в системе в ясности. Будьте внимательны, пароли никогда не должен храниться где-нибудь, когда-либо.
blockquote>password = "password1" subprocess.getstatusoutput ("echo {} | sudo -S apt-get update" .format (password))
В соответствующей заметке лучший способ запросить пользователя для пароля - использовать getpass:
import getpass password = getpass.getpass (prompt = 'Пароль:')
[!d1 5]Это не будет печатать пароль, как на экране во время ввода пользователем, как и следовало ожидать в системе Linux.
import os import sys import subprocess def main (): print («hello world, we are root!») return 0 if __name__ == '__main__': if os.getuid (): os.system ("sudo python3" + '' .join ( sys.argv)) sys.exit (100) else: sys.exit (main ())
Это решение вместо запроса пользователя запускается как root, если необходимо.
sudo
вместо жесткого кодирования, это намного лучше, чем использование sudo-in-script.
– Oli♦
15 April 2011 в 15:47