Added python script to edit .bashrc for each user
This commit is contained in:
parent
1581a9db03
commit
97fc68aa90
96
users/vsrv/scripts/write_bashrc.py
Normal file
96
users/vsrv/scripts/write_bashrc.py
Normal 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()
|
Loading…
Reference in New Issue
Block a user