#!/usr/bin/python
#-*- coding: utf-8 -*-
# File: hello2.py
from Tkinter import *
from tkMessageBox import *
import os
import tkFont
class App:
def __init__(self, master):
frame = Frame(master)
frame.pack()
frame.master.title("Ubuntu tools V 0.1.1")
frame.master.geometry("325x450")
ft = tkFont.Font(family = 'Fixdsys',size = 20,weight = tkFont.BOLD)
self.fancy=Label(frame,text = 'Ubuntu Repair Tools',font = ft)
self.fancy.grid(column = 0,row=0,rowspan=1,columnspan=2,sticky=W+E+N+S,pady=15)
self.myimage=PhotoImage(file="1.gif")
self.fancy=Label(frame,image=self.myimage)
self.fancy.grid(column = 0,row=1,rowspan=1,pady=5)
self.myimage1=PhotoImage(file="2.gif")
self.fancy1=Label(frame,image=self.myimage1)
self.fancy1.grid(column = 1,row=1,rowspan=1,pady=5)
self.b1=Button(frame,text = 'Repair QQ',width = 15,height = 1,command=self.showContents)
self.b1.grid(column = 0,row=2,rowspan=1)
self.flash=Button(frame,text = 'Repair Flash',width = 15,height = 1,command=self.showFlash)
self.flash.grid(column = 1,row=2,rowspan=1)
self.myimage2=PhotoImage(file="5.gif")
self.fancy2=Label(frame,image=self.myimage2)
self.fancy2.grid(column = 0,row=3,rowspan=1,pady=5)
self.myimage3=PhotoImage(file="6.gif")
self.fancy3=Label(frame,image=self.myimage3)
self.fancy3.grid(column = 1,row=3,rowspan=1,pady=5)
self.b12=Button(frame,text = 'Repair Sound',width = 15,height = 1,command=self.Sound)
self.b12.grid(column = 0,row=4,rowspan=1)
self.flash1=Button(frame,text = 'Install rar',width = 15,height = 1,command=self.rar)
self.flash1.grid(column = 1,row=4,rowspan=1)
self.myimage4=PhotoImage(file="3.gif")
self.fancy4=Label(frame,image=self.myimage4)
self.fancy4.grid(column = 0,row=5,rowspan=1,pady=5)
self.net=Button(frame,text = 'Repair network',width = 15,height = 1,command=self.network)
self.net.grid(column = 0,row=6,rowspan=1)
self.myimage5=PhotoImage(file="4.gif")
self.fancy5=Label(frame,image=self.myimage5)
self.fancy5.grid(column = 1,row=5,rowspan=1,pady=5)
self.clean=Button(frame,text = 'Install gtkorphan',width = 15,height = 1,command=self.clean)
self.clean.grid(column = 1,row=6,rowspan=1)
self.myimage6=PhotoImage(file="7.gif")
self.fancy6=Label(frame,image=self.myimage6)
self.fancy6.grid(column = 0,row=7,rowspan=1,pady=5)
self.clean=Button(frame,text = 'Remove Language',width = 15,height = 1,command=self.Language)
self.clean.grid(column = 0,row=8,rowspan=1)
self.myimage7=PhotoImage(file="8.gif")
self.fancy7=Label(frame,image=self.myimage7)
self.fancy7.grid(column = 1,row=7,rowspan=1,pady=5)
self.clean=Button(frame,text = 'Clear cache',width = 15,height = 1,command=self.Cache)
self.clean.grid(column = 1,row=8,rowspan=1)
self.myimage8=PhotoImage(file="9.gif")
self.fancy8=Label(frame,image=self.myimage8)
self.fancy8.grid(column = 0,row=9,rowspan=1,pady=5)
self.clean=Button(frame,text = 'Residual configuration',width = 15,height = 1,command=self.Residual)
self.clean.grid(column = 0,row=10,rowspan=1)
self.myimage9=PhotoImage(file="0.gif")
self.fancy9=Label(frame,image=self.myimage9)
self.fancy9.grid(column = 1,row=9,rowspan=1,pady=5)
self.clean=Button(frame,text = 'Residual program',width = 15,height = 1,command=self.Program)
self.clean.grid(column = 1,row=10,rowspan=1)
self.fancy=Label(frame,text = 'Author:Longmao')
self.fancy.grid(column = 1,row=11,rowspan=1,columnspan=2,sticky=E,pady=15)
def Program(self):
h=os.system('sudo apt-get autoremove')
print h
print showinfo(title = '',
message = 'Remnant Program cleared!')
def Residual(self):
g=os.system("dpkg -l |grep ^rc|awk '{print $2}' |tr ['\n'] [' ']|sudo xargs dpkg -P -")
print g
print showinfo(title = '',
message = 'Remnant Configuration cleared!')
def Cache(self):
f=os.system('sudo apt-get clean')
print f
print showinfo(title = '',
message = 'The cache has been emptied!')
def Language(self):
b=os.system('sudo apt-get install localepurge')
print b
print showinfo(title = '',
message = 'Useless language files have been deleted!')
def showContents(self):
fileHandle = open ( '/usr/bin/qq', 'w' )
fileHandle.write("""#!/bin/sh
export GDK_NATIVE_WINDOWS=true
cd /usr/share/tencent/qq/
./qq""")
fileHandle.close()
print showinfo(title = '',
message = 'qq has been modified!')
def showFlash(self):
flash1='/etc/fonts/conf.d/49-sansserif.conf'
os.remove(flash1)
print showinfo(title = '',
message = 'flash has been modified!')
def Sound(self):
print showinfo(title = '',
message = 'Please send one, two, four adjustments to the maximum!')
a=os.system('alsamixer')
print a
def rar(self):
b=os.system('sudo apt-get install rar')
print b
print showinfo(title = '',
message = 'rar has been installed!')
def network(self):
fileHandle = open ( '/etc/ppp/options', 'w' )
fileHandle.write("""# /etc/ppp/options
#
# Originally created by Jim Knoble <[email protected]>
# Modified for Debian by alvar Bray <[email protected]>
# Modified for PPP Server setup by Christoph Lameter <[email protected]>
#
# To quickly see what options are active in this file, use this command:
# egrep -v '#|^ *$' /etc/ppp/options
# Specify which DNS Servers the incoming Win95 or WinNT Connection should use
# Two Servers can be remotely configured
# ms-dns 192.168.1.1
# ms-dns 192.168.1.2
# Specify which WINS Servers the incoming connection Win95 or WinNT should use
# ms-wins 192.168.1.50
# ms-wins 192.168.1.51
# Run the executable or shell command specified after pppd has
# terminated the link. This script could, for example, issue commands
# to the modem to cause it to hang up if hardware modem control signals
# were not available.
#disconnect "chat -- \d+++\d\c OK ath0 OK"
# async character map -- 32-bit hex; each bit is a character
# that needs to be escaped for pppd to receive it. 0x00000001
# represents '\x01', and 0x80000000 represents '\x1f'.
asyncmap 0
# Require the peer to authenticate itself before allowing network
# packets to be sent or received.
# Please do not disable this setting. It is expected to be standard in
# future releases of pppd. Use the call option (see manpage) to disable
# authentication for specific peers.
#auth
noauth
# ... Unfortunately, fixing this properly in the peers file
# (/etc/ppp/peers/ppp0, typically) is apparently incompatible with the
# paradigm used by gnome-system-tools and system-tools-backend for
# managing the peers files. So in Ubuntu Feisty we change the default.
# Use hardware flow control (i.e. RTS/CTS) to control the flow of data
# on the serial port.
crtscts
# Use software flow control (i.e. XON/XOFF) to control the flow of data
# on the serial port.
#xonxoff
# Specifies that certain characters should be escaped on transmission
# (regardless of whether the peer requests them to be escaped with its
# async control character map). The characters to be escaped are
# specified as a list of hex numbers separated by commas. Note that
# almost any character can be specified for the escape option, unlike
# the asyncmap option which only allows control characters to be
# specified. The characters which may not be escaped are those with hex
# values 0x20 - 0x3f or 0x5e.
#escape 11,13,ff
# Don't use the modem control lines.
#local
# Specifies that pppd should use a UUCP-style lock on the serial device
# to ensure exclusive access to the device.
lock
# Don't show the passwords when logging the contents of PAP packets.
# This is the default.
hide-password
# When logging the contents of PAP packets, this option causes pppd to
# show the password string in the log message.
#show-password
# Use the modem control lines. On Ultrix, this option implies hardware
# flow control, as for the crtscts option. (This option is not fully
# implemented.)
modem
# Set the MRU [Maximum Receive Unit] value to <n> for negotiation. pppd
# will ask the peer to send packets of no more than <n> bytes. The
# minimum MRU value is 128. The default MRU value is 1500. A value of
# 296 is recommended for slow links (40 bytes for TCP/IP header + 256
# bytes of data).
#mru 542
# Set the interface netmask to <n>, a 32 bit netmask in "decimal dot"
# notation (e.g. 255.255.255.0).
#netmask 255.255.255.0
# Disables the default behaviour when no local IP address is specified,
# which is to determine (if possible) the local IP address from the
# hostname. With this option, the peer will have to supply the local IP
# address during IPCP negotiation (unless it specified explicitly on the
# command line or in an options file).
#noipdefault
# Enables the "passive" option in the LCP. With this option, pppd will
# attempt to initiate a connection; if no reply is received from the
# peer, pppd will then just wait passively for a valid LCP packet from
# the peer (instead of exiting, as it does without this option).
#passive
# With this option, pppd will not transmit LCP packets to initiate a
# connection until a valid LCP packet is received from the peer (as for
# the "passive" option with old versions of pppd).
#silent
# Don't request or allow negotiation of any options for LCP and IPCP
# (use default values).
#-all
# Disable Address/Control compression negotiation (use default, i.e.
# address/control field disabled).
#-ac
# Disable asyncmap negotiation (use the default asyncmap, i.e. escape
# all control characters).
#-am
# Don't fork to become a background process (otherwise pppd will do so
# if a serial device is specified).
#-detach
# Disable IP address negotiation (with this option, the remote IP
# address must be specified with an option on the command line or in
# an options file).
#-ip
# Disable IPCP negotiation and IP communication. This option should
# only be required if the peer is buggy and gets confused by requests
# from pppd for IPCP negotiation.
#noip
# Disable magic number negotiation. With this option, pppd cannot
# detect a looped-back line.
#-mn
# Disable MRU [Maximum Receive Unit] negotiation (use default, i.e.
# 1500).
#-mru
# Disable protocol field compression negotiation (use default, i.e.
# protocol field compression disabled).
#-pc
# Require the peer to authenticate itself using PAP.
#+pap
# Don't agree to authenticate using PAP.
#-pap
# Require the peer to authenticate itself using CHAP [Cryptographic
# Handshake Authentication Protocol] authentication.
#+chap
# Don't agree to authenticate using CHAP.
#-chap
# Disable negotiation of Van Jacobson style IP header compression (use
# default, i.e. no compression).
#-vj
# Increase debugging level (same as -d). If this option is given, pppd
# will log the contents of all control packets sent or received in a
# readable form. The packets are logged through syslog with facility
# daemon and level debug. This information can be directed to a file by
# setting up /etc/syslog.conf appropriately (see syslog.conf(5)). (If
# pppd is compiled with extra debugging enabled, it will log messages
# using facility local2 instead of daemon).
#debug
# Append the domain name <d> to the local host name for authentication
# purposes. For example, if gethostname() returns the name porsche,
# but the fully qualified domain name is porsche.Quotron.COM, you would
# use the domain option to set the domain name to Quotron.COM.
#domain <d>
# Enable debugging code in the kernel-level PPP driver. The argument n
# is a number which is the sum of the following values: 1 to enable
# general debug messages, 2 to request that the contents of received
# packets be printed, and 4 to request that the contents of transmitted
# packets be printed.
#kdebug n
# Set the MTU [Maximum Transmit Unit] value to <n>. Unless the peer
# requests a smaller value via MRU negotiation, pppd will request that
# the kernel networking code send data packets of no more than n bytes
# through the PPP network interface.
#mtu <n>
# Set the name of the local system for authentication purposes to <n>.
# This is a privileged option. With this option, pppd will use lines in the
# secrets files which have <n> as the second field when looking for a
# secret to use in authenticating the peer. In addition, unless overridden
# with the user option, <n> will be used as the name to send to the peer
# when authenticating the local system to the peer. (Note that pppd does
# not append the domain name to <n>.)
#name <n>
# Enforce the use of the hostname as the name of the local system for
# authentication purposes (overrides the name option).
#usehostname
# Set the assumed name of the remote system for authentication purposes
# to <n>.
#remotename <n>
# Add an entry to this system's ARP [Address Resolution Protocol]
# table with the IP address of the peer and the Ethernet address of this
# system.
proxyarp
# Use the system password database for authenticating the peer using
# PAP. Note: mgetty already provides this option. If this is specified
# then dialin from users using a script under Linux to fire up ppp wont work.
# login
# If this option is given, pppd will send an LCP echo-request frame to the
# peer every n seconds. Normally the peer should respond to the echo-request
# by sending an echo-reply. This option can be used with the
# lcp-echo-failure option to detect that the peer is no longer connected.
lcp-echo-interval 30
# If this option is given, pppd will presume the peer to be dead if n
# LCP echo-requests are sent without receiving a valid LCP echo-reply.
# If this happens, pppd will terminate the connection. Use of this
# option requires a non-zero value for the lcp-echo-interval parameter.
# This option can be used to enable pppd to terminate after the physical
# connection has been broken (e.g., the modem has hung up) in
# situations where no hardware modem control lines are available.
lcp-echo-failure 40
# Set the LCP restart interval (retransmission timeout) to <n> seconds
# (default 3).
#lcp-restart <n>
# Set the maximum number of LCP terminate-request transmissions to <n>
# (default 3).
#lcp-max-terminate <n>
# Set the maximum number of LCP configure-request transmissions to <n>
# (default 10).
#lcp-max-configure <n>
# Set the maximum number of LCP configure-NAKs returned before starting
# to send configure-Rejects instead to <n> (default 10).
#lcp-max-failure <n>
# Set the IPCP restart interval (retransmission timeout) to <n>
# seconds (default 3).
#ipcp-restart <n>
# Set the maximum number of IPCP terminate-request transmissions to <n>
# (default 3).
#ipcp-max-terminate <n>
# Set the maximum number of IPCP configure-request transmissions to <n>
# (default 10).
#ipcp-max-configure <n>
# Set the maximum number of IPCP configure-NAKs returned before starting
# to send configure-Rejects instead to <n> (default 10).
#ipcp-max-failure <n>
# Set the PAP restart interval (retransmission timeout) to <n> seconds
# (default 3).
#pap-restart <n>
# Set the maximum number of PAP authenticate-request transmissions to
# <n> (default 10).
#pap-max-authreq <n>
# Set the maximum time that pppd will wait for the peer to authenticate
# itself with PAP to <n> seconds (0 means no limit).
#pap-timeout <n>
# Set the CHAP restart interval (retransmission timeout for
# challenges) to <n> seconds (default 3).
#chap-restart <n>
# Set the maximum number of CHAP challenge transmissions to <n>
# (default 10).
#chap-max-challenge
# If this option is given, pppd will rechallenge the peer every <n>
# seconds.
#chap-interval <n>
# With this option, pppd will accept the peer's idea of our local IP
# address, even if the local IP address was specified in an option.
#ipcp-accept-local
# With this option, pppd will accept the peer's idea of its (remote) IP
# address, even if the remote IP address was specified in an option.
#ipcp-accept-remote
# Disable the IPXCP and IPX protocols.
# To let pppd pass IPX packets comment this out --- you'll probably also
# want to install ipxripd, and have the Internal IPX Network option enabled
# in your kernel. /usr/doc/HOWTO/IPX-HOWTO.gz contains more info.
noipx
# Exit once a connection has been made and terminated. This is the default,
# unless the `persist' or `demand' option has been specified.
#nopersist
# Do not exit after a connection is terminated; instead try to reopen
# the connection.
#persist
# Terminate after n consecutive failed connection attempts.
# A value of 0 means no limit. The default value is 10.
#maxfail <n>
# Initiate the link only on demand, i.e. when data traffic is present.
# With this option, the remote IP address must be specified by the user on
# the command line or in an options file. Pppd will initially configure
# the interface and enable it for IP traffic without connecting to the peer.
# When traffic is available, pppd will connect to the peer and perform
# negotiation, authentication, etc. When this is completed, pppd will
# commence passing data packets (i.e., IP packets) across the link.
#demand
# Specifies that pppd should disconnect if the link is idle for <n> seconds.
# The link is idle when no data packets (i.e. IP packets) are being sent or
# received. Note: it is not advisable to use this option with the persist
# option without the demand option. If the active-filter option is given,
# data packets which are rejected by the specified activity filter also
# count as the link being idle.
#idle <n>
# Specifies how many seconds to wait before re-initiating the link after
# it terminates. This option only has any effect if the persist or demand
# option is used. The holdoff period is not applied if the link was
# terminated because it was idle.
#holdoff <n>
# Wait for up n milliseconds after the connect script finishes for a valid
# PPP packet from the peer. At the end of this time, or when a valid PPP
# packet is received from the peer, pppd will commence negotiation by
# sending its first LCP packet. The default value is 1000 (1 second).
# This wait period only applies if the connect or pty option is used.
#connect-delay <n>
# Packet filtering: for more information, see pppd(8)
# Any packets matching the filter expression will be interpreted as link
# activity, and will cause a "demand" connection to be activated, and reset
# the idle connection timer. (idle option)
# The filter expression is akin to that of tcpdump(1)
#active-filter <filter-expression>
# ---<End of File>---""")
fileHandle.close()
print showinfo(title = '',
message = 'network has been modified!')
def clean(self):
b=os.system('sudo apt-get install gtkorphan')
print b
print showinfo(title = '',
message = 'Clean up the contents of the first page!')
c=os.system('sudo gtkorphan')
print c
root = Tk()
app = App(root)
root.mainloop()
ubuntu repair tool V0.1.1 自己写的小程序 大家来支持下撒~
- wangshuxun25
- 帖子: 342
- 注册时间: 2009-02-23 17:55
- 联系:
Re: ubuntu repair tool V0.1.1 自己写的小程序 大家来支持下撒~
我的linux网站:http://www.kudouzi.com 欢迎访问!!!
我的QQ:53273291 敬请骚扰
我的QQ:53273291 敬请骚扰
- wangshuxun25
- 帖子: 342
- 注册时间: 2009-02-23 17:55
- 联系:
Re: ubuntu repair tool V0.1.1 自己写的小程序 大家来支持下撒~
源代码~~
大家一起研究哈~~
大家一起研究哈~~
我的linux网站:http://www.kudouzi.com 欢迎访问!!!
我的QQ:53273291 敬请骚扰
我的QQ:53273291 敬请骚扰
-
- 帖子: 85
- 注册时间: 2007-03-10 12:34
- 联系:
Re: ubuntu repair tool V0.1.1 自己写的小程序 大家来支持下撒~
给大家说下这工具原理,原理很简单,都是调用系统命令手简化你手动操作的目的,不过,为了大家的方便作者这样写,值得鼓励,
1\修复QQ原理 修改/usr/bin/qq 这个文件,在里面加上一句export GDK_NATIVE_WINDOWS=true ,而作者则是重写了这个文件,写成
#!/bin/sh
export GDK_NATIVE_WINDOWS=true
cd /usr/share/tencent/qq/
./qq
2\修复FLASH乱码 则是直接删除/etc/fonts/conf.d/49-sansserif.conf 这个文件
3\修复声音 调用系统命令alsamixer
4\修复RAR是直接安装RAR支持 sudo apt-get install rar
5\修复网络:写了很大一片,但大部分都是注释掉的,修改的文件是 /etc/ppp/options 不抄袭了,太多了
后面的功能没在源码中找到,可能是没仔细看
后面的功能也是调用系统的文件,比如apt-get autoremove\apt-get clean\apt-get install localepurge等等
1\修复QQ原理 修改/usr/bin/qq 这个文件,在里面加上一句export GDK_NATIVE_WINDOWS=true ,而作者则是重写了这个文件,写成
#!/bin/sh
export GDK_NATIVE_WINDOWS=true
cd /usr/share/tencent/qq/
2\修复FLASH乱码 则是直接删除/etc/fonts/conf.d/49-sansserif.conf 这个文件
3\修复声音 调用系统命令alsamixer
4\修复RAR是直接安装RAR支持 sudo apt-get install rar
5\修复网络:写了很大一片,但大部分都是注释掉的,修改的文件是 /etc/ppp/options 不抄袭了,太多了
后面的功能没在源码中找到,可能是没仔细看
后面的功能也是调用系统的文件,比如apt-get autoremove\apt-get clean\apt-get install localepurge等等