Added python script to edit .bashrc for each user

This commit is contained in:
Sven Heidemann 2021-04-21 10:15:52 +02:00
parent 1581a9db03
commit 97fc68aa90

View File

@ -0,0 +1,96 @@
#!/usr/bin/env python3
"""
# -*- coding: utf-8 -*-
Write bashrc script
~~~~~~~~~~~~~~~~~~~
Script to comment all alias ls="ls *" to allow global bashrc alias ls="lsd"
:copyright: (c) 2021 sh-edraft.de
:license: MIT, see LICENSE for more details.
"""
__title__ = 'sh_write_bashrc'
__author__ = 'Sven Heidemann'
__license__ = 'MIT'
__copyright__ = 'Copyright (c) 2021 sh-edraft.de'
__version__ = '2021.4'
# At first check for root
# Then load all .bashrc files from /home/<user>/
# Each folder in /home/ must contain a .bashrc file, if not it won't be created
import os
import sys
_file_name = '.bashrc'
def _check_dependencies():
if sys.platform != 'linux':
raise Exception('You must use this script on linux!')
if os.geteuid() != 0:
raise PermissionError('You must be root to use this script on linux.')
def _load_all_scripts(home_dir: str, root_user_dir: str) -> list[str]:
files = []
for user in os.listdir(home_dir):
file = os.path.join(home_dir, user, _file_name)
if os.path.isfile(file):
files.append(file)
file = os.path.join(root_user_dir, 'root', _file_name)
if os.path.isfile(file):
files.append(file)
return files
def _edit_script(file: str):
lines: list[str] = []
content = ''
try:
with open(file, 'r') as f:
lines = f.readlines()
f.close()
except Exception as e:
print(e)
for line in lines:
line_words = line.split()
e_line = ' '.join(line_words)
if not e_line.startswith('#') and e_line.startswith('alias ls'):
line = line.replace(e_line, f'#{e_line}')
elif not e_line.startswith('#') and e_line.startswith('alias') and '\'ls' in e_line or '\"ls' in e_line:
line = line.replace(e_line, f'#{e_line}')
content += line
try:
pass
with open(file, 'w') as f:
f.write(content)
f.close()
except Exception as e:
print(e)
def main():
_check_dependencies()
files = _load_all_scripts('/home/', '/root/')
for file in files:
_edit_script(file)
print('Success!', '\nChanged files:')
print('\n'.join(files))
if __name__ == '__main__':
main()