linux-tools/modules/swap/module.py

88 lines
3.2 KiB
Python
Raw Normal View History

2020-01-17 19:21:48 +01:00
import subprocess
from AbstractModule import AbstractModule
2020-01-18 04:15:08 +01:00
from PyInquirer import prompt
2020-01-17 19:21:48 +01:00
2020-01-18 04:15:08 +01:00
class SwapModule(AbstractModule):
2020-01-17 19:21:48 +01:00
def __init__(self):
super().__init__()
2020-01-18 04:15:08 +01:00
self.swap_file = None
2020-01-17 19:21:48 +01:00
2020-01-18 04:15:08 +01:00
def run(self):
2020-01-17 19:21:48 +01:00
actions = ["Create/Resize", "Delete", "Get swap location", "Get swap size"]
2020-01-18 04:15:08 +01:00
menu = [
{
'type': 'list',
'message': 'Select action',
'name': 'action',
'choices': list(map(lambda x: {"name": x}, actions))
}
]
selected_action = prompt(menu)['action']
if selected_action == "Create/Resize":
2020-01-18 04:15:08 +01:00
self.create_resize_swap()
elif selected_action == "Delete":
2020-01-18 04:15:08 +01:00
self.delete_swap()
elif selected_action == "Get swap location":
self.swap_location_check()
elif selected_action == "Get swap size":
self.get_swap_size()
2020-01-17 19:21:48 +01:00
2020-01-18 04:15:08 +01:00
def swap_location_check(self) -> None:
output_swaps = subprocess.check_output(['cat', '/proc/swaps']).decode("UTF-8")
li = list(output_swaps.split())
final_list = li
try:
print("Swap is located here:", final_list[5])
self.swap_file = final_list[5]
except IndexError:
print("Swap file doesn´t exist!\n")
def get_swap_size(self) -> None:
swap_size = subprocess.check_output(['swapon', '--show']).decode("UTF-8")
li = list(swap_size.split())
final_list = li
try:
print("Swap is {}b big!".format(final_list[7]))
except IndexError:
print("Swap file doesn´t exist!")
2020-01-17 19:21:48 +01:00
2020-01-18 04:15:08 +01:00
def create_resize_swap(self):
output_swapon = subprocess.check_output(['swapon', '--show']).decode("UTF-8")
if not output_swapon:
size = input("How big should the swap be(numbers in Gigabyte)? ")
create_swapfile = """sudo fallocate -l {}G /swapfile &&
sudo chmod 600 /swapfile &&
sudo mkswap /swapfile &&
sudo swapon /swapfile""".format(size)
subprocess.call(create_swapfile, shell=True)
2020-01-17 19:21:48 +01:00
2020-01-18 04:15:08 +01:00
output_free = subprocess.check_output(['free', '-h']).decode("UTF-8")
print(output_free.strip())
2020-01-17 19:21:48 +01:00
2020-01-18 04:15:08 +01:00
else:
print("")
print("Swap already installed! You can resize it!")
resize = input("How big should your swap become(numbers in Gigabyte)? ")
resize_swapfile = """sudo swapoff /swapfile &&
sudo fallocate -l {}G /swapfile &&
sudo mkswap /swapfile &&
sudo swapon /swapfile""".format(resize)
subprocess.call(resize_swapfile, shell=True)
output_free = subprocess.check_output(['free', '-h']).decode("UTF-8")
print(output_free.strip())
2020-01-17 19:21:48 +01:00
2020-01-18 04:15:08 +01:00
def delete_swap(self):
self.swap_location_check()
disable_swapfile = """sudo swapoff {0} &&
sudo rm {0}""".format(self.swap_file)
2020-01-17 19:21:48 +01:00
2020-01-18 04:15:08 +01:00
subprocess.call(disable_swapfile, shell=True)
output_swapon = subprocess.check_output(['swapon', '--show']).decode("UTF-8")
2020-01-17 19:21:48 +01:00
output_free = subprocess.check_output(['free', '-h']).decode("UTF-8")
2020-01-18 04:15:08 +01:00
if not output_swapon:
print("Swap deleted!")
print(output_free.strip())