main.py 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. # -*- coding: utf-8 -*-
  2. # Form implementation generated from reading ui file 'untitled.ui'
  3. #
  4. # Created by: PyQt5 UI code generator 5.10.1
  5. #
  6. # WARNING! All changes made in this file will be lost!
  7. from PyQt5 import QtCore, QtGui, QtWidgets
  8. from PyQt5.Qt import Qt, QTreeWidgetItem
  9. import os
  10. import subprocess
  11. class Ui_MainWindow(object):
  12. def setupUi(self, MainWindow):
  13. MainWindow.setObjectName("MainWindow")
  14. MainWindow.setWindowModality(QtCore.Qt.ApplicationModal)
  15. MainWindow.setEnabled(True)
  16. MainWindow.resize(800, 600)
  17. sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
  18. sizePolicy.setHorizontalStretch(0)
  19. sizePolicy.setVerticalStretch(0)
  20. sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
  21. MainWindow.setSizePolicy(sizePolicy)
  22. MainWindow.setMinimumSize(QtCore.QSize(800, 600))
  23. MainWindow.setMaximumSize(QtCore.QSize(800, 600))
  24. MainWindow.setFocusPolicy(QtCore.Qt.TabFocus)
  25. MainWindow.setLayoutDirection(QtCore.Qt.LeftToRight)
  26. self.centralwidget = QtWidgets.QWidget(MainWindow)
  27. sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
  28. sizePolicy.setHorizontalStretch(0)
  29. sizePolicy.setVerticalStretch(0)
  30. sizePolicy.setHeightForWidth(self.centralwidget.sizePolicy().hasHeightForWidth())
  31. self.centralwidget.setSizePolicy(sizePolicy)
  32. font = QtGui.QFont()
  33. font.setFamily("Droid Sans")
  34. font.setBold(True)
  35. font.setWeight(75)
  36. self.centralwidget.setFont(font)
  37. self.centralwidget.setObjectName("centralwidget")
  38. self.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
  39. self.verticalLayoutWidget.setGeometry(QtCore.QRect(10, 100, 781, 451))
  40. self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
  41. self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
  42. self.verticalLayout.setContentsMargins(0, 0, 0, 0)
  43. self.verticalLayout.setObjectName("verticalLayout")
  44. self.servisler = QtWidgets.QGroupBox(self.verticalLayoutWidget)
  45. sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
  46. sizePolicy.setHorizontalStretch(0)
  47. sizePolicy.setVerticalStretch(0)
  48. sizePolicy.setHeightForWidth(self.servisler.sizePolicy().hasHeightForWidth())
  49. self.servisler.setSizePolicy(sizePolicy)
  50. self.servisler.setObjectName("servisler")
  51. self.treeWidget = QtWidgets.QTreeWidget(self.servisler)
  52. self.treeWidget.setGeometry(QtCore.QRect(0, 20, 781, 431))
  53. self.treeWidget.setColumnCount(4)
  54. self.treeWidget.setObjectName("treeWidget")
  55. self.treeWidget.header().setDefaultSectionSize(120)
  56. self.verticalLayout.addWidget(self.servisler)
  57. self.horizontalLayoutWidget_5 = QtWidgets.QWidget(self.centralwidget)
  58. self.horizontalLayoutWidget_5.setGeometry(QtCore.QRect(10, 10, 221, 31))
  59. self.horizontalLayoutWidget_5.setObjectName("horizontalLayoutWidget_5")
  60. self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_5)
  61. self.horizontalLayout_5.setContentsMargins(0, 0, 0, 0)
  62. self.horizontalLayout_5.setObjectName("horizontalLayout_5")
  63. self.label = QtWidgets.QLabel(self.horizontalLayoutWidget_5)
  64. self.label.setObjectName("label")
  65. self.horizontalLayout_5.addWidget(self.label)
  66. self.horizontalLayoutWidget_6 = QtWidgets.QWidget(self.centralwidget)
  67. self.horizontalLayoutWidget_6.setGeometry(QtCore.QRect(470, 10, 321, 31))
  68. self.horizontalLayoutWidget_6.setObjectName("horizontalLayoutWidget_6")
  69. self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_6)
  70. self.horizontalLayout_6.setContentsMargins(0, 0, 0, 0)
  71. self.horizontalLayout_6.setObjectName("horizontalLayout_6")
  72. self.pushButton_baslat = QtWidgets.QPushButton(self.horizontalLayoutWidget_6)
  73. self.pushButton_baslat.setEnabled(False)
  74. icon = QtGui.QIcon()
  75. icon.addPixmap(QtGui.QPixmap("../.designer/backup/start-button.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
  76. self.pushButton_baslat.setIcon(icon)
  77. self.pushButton_baslat.setObjectName("pushButton_baslat")
  78. self.horizontalLayout_6.addWidget(self.pushButton_baslat)
  79. self.pushButton_durdur = QtWidgets.QPushButton(self.horizontalLayoutWidget_6)
  80. self.pushButton_durdur.setEnabled(False)
  81. icon1 = QtGui.QIcon()
  82. icon1.addPixmap(QtGui.QPixmap("../.designer/backup/stop.jpeg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
  83. self.pushButton_durdur.setIcon(icon1)
  84. self.pushButton_durdur.setObjectName("pushButton_durdur")
  85. self.horizontalLayout_6.addWidget(self.pushButton_durdur)
  86. MainWindow.setCentralWidget(self.centralwidget)
  87. self.menubar = QtWidgets.QMenuBar(MainWindow)
  88. self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22))
  89. self.menubar.setObjectName("menubar")
  90. self.menuDosya = QtWidgets.QMenu(self.menubar)
  91. self.menuDosya.setObjectName("menuDosya")
  92. self.menuYard_m = QtWidgets.QMenu(self.menubar)
  93. self.menuYard_m.setObjectName("menuYard_m")
  94. MainWindow.setMenuBar(self.menubar)
  95. self.statusbar = QtWidgets.QStatusBar(MainWindow)
  96. self.statusbar.setObjectName("statusbar")
  97. MainWindow.setStatusBar(self.statusbar)
  98. self.action_cikis = QtWidgets.QAction(MainWindow)
  99. icon2 = QtGui.QIcon()
  100. icon2.addPixmap(QtGui.QPixmap("../.designer/PycharmProjects/Misem/simgeler/cikis.svg"), QtGui.QIcon.Normal,
  101. QtGui.QIcon.Off)
  102. self.action_cikis.setIcon(icon2)
  103. self.action_cikis.setShortcutContext(QtCore.Qt.ApplicationShortcut)
  104. self.action_cikis.setMenuRole(QtWidgets.QAction.QuitRole)
  105. self.action_cikis.setObjectName("action_cikis")
  106. self.actionHakk_nda = QtWidgets.QAction(MainWindow)
  107. self.actionHakk_nda.setMenuRole(QtWidgets.QAction.AboutRole)
  108. self.actionHakk_nda.setObjectName("actionHakk_nda")
  109. self.menuDosya.addAction(self.action_cikis)
  110. self.menuYard_m.addAction(self.actionHakk_nda)
  111. self.menubar.addAction(self.menuDosya.menuAction())
  112. self.menubar.addAction(self.menuYard_m.menuAction())
  113. self.retranslateUi(MainWindow)
  114. self.getServices()
  115. QtCore.QMetaObject.connectSlotsByName(MainWindow)
  116. def retranslateUi(self, MainWindow):
  117. _translate = QtCore.QCoreApplication.translate
  118. MainWindow.setWindowTitle(_translate("MainWindow", "Milis Servis Merkezi - MİSEM"))
  119. self.servisler.setTitle(_translate("MainWindow", "Servisler"))
  120. self.treeWidget.headerItem().setText(0, _translate("MainWindow", "Servis Adı"))
  121. self.treeWidget.setColumnWidth(0, 120)
  122. self.treeWidget.headerItem().setText(1, _translate("MainWindow", "Başlat Seviyesi"))
  123. self.treeWidget.setColumnWidth(1, 110)
  124. self.treeWidget.headerItem().setText(2, _translate("MainWindow", "Anlık Durum"))
  125. self.treeWidget.setColumnWidth(2, 100)
  126. self.treeWidget.headerItem().setText(3, _translate("MainWindow", "Süreç No"))
  127. self.treeWidget.setColumnWidth(3, 75)
  128. self.treeWidget.headerItem().setText(4, _translate("MainWindow", "Servis Açıklaması"))
  129. self.treeWidget.setColumnWidth(4, 375)
  130. self.label.setText(_translate("MainWindow", "Servisi Başlat/Durdur"))
  131. self.pushButton_baslat.setText(_translate("MainWindow", "Başlat"))
  132. self.pushButton_durdur.setText(_translate("MainWindow", "Durdur"))
  133. self.menuDosya.setTitle(_translate("MainWindow", "Dosya"))
  134. self.menuYard_m.setTitle(_translate("MainWindow", "Yardım"))
  135. self.action_cikis.setText(_translate("MainWindow", "Çıkış"))
  136. self.actionHakk_nda.setText(_translate("MainWindow", "Hakkında"))
  137. def get_process_id(self,process):
  138. if process == "postgresql":
  139. process = "postgres"
  140. elif process == "nfs-server":
  141. process = "nfsd"
  142. elif process == "sysklogd":
  143. process = "syslogd"
  144. command = subprocess.run("pgrep %s | head -n 1" % process, shell=True, stdout=subprocess.PIPE, universal_newlines=True)
  145. output = command.stdout
  146. return output
  147. def get_service_desc(self,process):
  148. self.service_desc_list = {
  149. 'alsa':'Gelişmiş Linux ses mimarisi',
  150. 'cups':'CUPS yazdırma sistemi',
  151. 'dbus':'Freedesktop mesaj otobüs sistemi',
  152. 'gpm':'Sanal konsollar için fare sunucusu ve kes-yapıştır aracı',
  153. 'lightdm':'Hafif bir giriş yöneticisi',
  154. 'mysql':'MySQL ilişkisel veritabanı yönetim sistemi',
  155. 'netfs':'NFS,SMB ve NCP dosya sistemleri için bağla-ayır için kullanılan bir başlangıç zamanı betiği',
  156. 'network':'Ağ yönetim sistemi servisi',
  157. 'nfs-server':'Ağ temelli paylaşımlı dosya sistemi',
  158. 'plymouth':'Grafik önyükleme başlatma ekranı',
  159. 'postgresql':'Gelişmiş nesne-ilişkisel veritabanı yönetim sistemi',
  160. 'pppd':'Çevirmeli ağ yapılandırma servisi',
  161. 'rpcbind':'Çeşitli protokoller üzerinden RPC\'yi destekleme',
  162. 'rsyncd':'Dosyalardaki farklılıkları göndererek bir ağ üzerinden eşleme',
  163. 'samba':'SMB dosya sunucusu ve AD etki alanı sunucusu',
  164. 'slapd':'Basit dizin erişim protokolü (LDAP) araç seti',
  165. 'sshd':'SSH bağlantı araçlarının ücretsiz sürümü',
  166. 'sysklogd':'Çekirdek tarafından verilen sistem mesajlarının günlüğe kaydedilmesi',
  167. 'winbindd':'NT sunucularından isimleri çözümlemek için isim servisi anahtar programcığı'
  168. }
  169. for key,value in self.service_desc_list.items():
  170. if process == key:
  171. return value
  172. def getServices(self):
  173. self.init = {}
  174. self.init_level2 = 2
  175. self.init_level3 = 3
  176. self.init_level4 = 4
  177. self.init_level5 = 5
  178. self.ignore_files = ['.','README','bluetooth','sudo','reboot','modules','rc','halt','init_single','localnet','random','sendsignals','setclock','template']
  179. for files_init in sorted(os.listdir("/etc/init.d")):
  180. if not files_init in self.ignore_files:
  181. self.init[files_init] = []
  182. self.init_len = len(self.init)
  183. for files_rc2 in sorted(os.listdir("/etc/rc.d/rc2.d/")):
  184. if not files_rc2.startswith('README'):
  185. if files_rc2[3:] in self.init:
  186. self.init.setdefault(files_rc2.format()[3:],[0]).append(self.init_level2)
  187. for files_rc3 in sorted(os.listdir("/etc/rc.d/rc3.d/")):
  188. if not files_rc3.startswith('README'):
  189. if files_rc3[3:] in self.init:
  190. self.init.setdefault(files_rc3.format()[3:],[1]).append(self.init_level3)
  191. for files_rc4 in sorted(os.listdir("/etc/rc.d/rc4.d/")):
  192. if not files_rc4.startswith('README'):
  193. if files_rc4[3:] in self.init:
  194. self.init.setdefault(files_rc4.format()[3:],[2]).append(self.init_level4)
  195. for files_rc5 in sorted(os.listdir("/etc/rc.d/rc5.d/")):
  196. if not files_rc5.startswith('README'):
  197. if files_rc5[3:] in self.init:
  198. self.init.setdefault(files_rc5.format()[3:],[3]).append(self.init_level5)
  199. for service in self.init:
  200. self.init.setdefault(service, [4]).append(self.get_process_id(service))
  201. for key,value in self.init.items():
  202. self.parent = self.treeWidget
  203. self.child = QTreeWidgetItem(self.parent)
  204. self.child.setFlags(self.child.flags() | Qt.ItemIsUserCheckable)
  205. self.child.setText(0, "{}".format(key))
  206. self.child.setCheckState(0, Qt.Unchecked)
  207. if value[0:4] == []:
  208. self.child.setText(1, "-")
  209. elif value[0:4] == ['']:
  210. self.child.setText(1, "{}".format("-").center(20))
  211. else:
  212. self.child.setText(1, "{}".format(value[0:4]).center(20))
  213. if value[4:] == [] or value[4:] == ['']:
  214. self.child.setText(2, "Çalışmıyor")
  215. self.child.setForeground(2,QtGui.QBrush(QtGui.QColor("#ff0000")))
  216. else:
  217. self.child.setText(2, "Çalışıyor")
  218. self.child.setForeground(2, QtGui.QBrush(QtGui.QColor("#bff000")))
  219. if value[0:4] == "''":
  220. self.child.setText(3, "-")
  221. else:
  222. self.child.setText(3, "{}".format(value[4:]).replace('\'','').replace('[','').replace('[b','').replace(']','').replace('\\n','').center(10))
  223. self.child.setText(4, "{}".format(self.get_service_desc(key)))
  224. if __name__ == "__main__":
  225. import sys
  226. app = QtWidgets.QApplication(sys.argv)
  227. MainWindow = QtWidgets.QMainWindow()
  228. ui = Ui_MainWindow()
  229. ui.setupUi(MainWindow)
  230. MainWindow.show()
  231. sys.exit(app.exec_())