Latest projects: matchngrow.dk and shellconf.py


Match'n'grow

Introduction

A matchup platform for people and startup companies. This project was initiated by Copenhagen Business School (Copenhagen School of entrepreneurship). I had worked for them as a permanent go-to-person earlier, so we naturally got in contact. We planned the project together, and started right away. After around 1 month, we had the product ready. There is still a bit of work to do on the project.

URL

http://matchngrow.dk

Keywords

Match-up platform between companies and people
GNU/Linux - Debian
PHP5 - Zend2 MVC Framework
JavaScript and jQuery
Skeleton responsive framework and Twitter Bootstrap
HTML5 and CSS3
Varnish cache
LinkedIn API
Flat design

Screenshot



Shellconf.py

Introduction

A project based on simple remote configuration with shell for UNIX/Linux systems, influenced by FSS. This project was a part of my Python learning, where i ended up getting a lot of great feedback. Most of the feedback was very positive, and i was very surprised by this, although i appreciate all of the feedback. Read further to the README.md section, to see what the project is about in details.

URL

https://github.com/adionditsak/shellconf.py

Keywords

Python 3
OOP
Asynchronous
Remote configuration with shell scripts
UNIX/Linux

README.md

Simple remote configuration with shell for UNIX/Linux systems.

Run local shell scripts chronologically on defined remote servers asynchronously.

MIT licensed - no restrictions.

Directory structure

.
|-- README.md
|-- log
|   |-- error.log
|   `-- output.log
|-- scripts
|   |-- apt.sh
|   |-- list.sh
|   `-- uname.sh
|-- servers.pya
`-- shellconf.py

Explained

  • ./log/ contains output.log with output of successfully executed scripts, and error.log with output of scripts which has been executed with failure.
  • ./scripts/ contains your shell scripts which will be executed one by one as shellconf.py is running.
  • ./servers.py contains your servers in a list in user@ip format.
  • ./shellconf.py holds the logic.

How to use

First of all, define your servers in the list of servers.py file, with the following format:

servers = ['user@ip-1', 'user@ip-2']

Then make sure you got what you need in your scripts folder of shell scripts to execute on your remote servers.

Initiate class with arguments of what shell to use and where your shell scripts are located. Here you can write whatever shell you would like to use, eg. sh, bash, zsh, csh or ksh:

sc = ShellConf('bash', './scripts/')

Then use the run() function to run the scripts at your remote servers defined in the servers.py list.

sc.run_for_all_servers() # or sc.run_for_one_server('user@ip')

You can call it directly from shellconf.py or run it as a module.

As a module from the Python prompt:

>>> import shellconf
>>> sc = shellconf.ShellConf('bash', './scripts/')
>>> sc.run_for_all_servers() # or sc.run_for_one_server('user@ip')

As a CLI

Use -a for configuring all servers, and -s [server-name] for one server.

$ python shellconf.py -a

or

$ python shellconf.py -s user@ip

This would run the shell scripts placed in ./scripts/ on the remote servers one by one.

Example output

$ python shellconf.py -a
[RUNNING SCRIPT ./scripts/apt.sh @ root@aarvik.dk]
[RUNNING SCRIPT ./scripts/apt.sh @ user@ip-2]
!!! - ERRORS with apt.sh at user@ip-2. See ./log/shellconf.log for details.
[RUNNING SCRIPT ./scripts/uname.sh @ user@ip-2]
!!! - ERRORS with uname.sh at user@ip-2. See ./log/shellconf.log for details.
[RUNNING SCRIPT ./scripts/list.sh @ user@ip-2]
!!! - ERRORS with list.sh at user@ip-2. See ./log/shellconf.log for details.
~~~~~<del> scripts for user@ip-2 completed </del>~~~<del>
*** - SUCCESS with apt.sh at root@aarvik.dk. See ./log/shellconf.log for details.
[RUNNING SCRIPT ./scripts/uname.sh @ root@aarvik.dk]
*** - SUCCESS with uname.sh at root@aarvik.dk. See ./log/shellconf.log for details.
[RUNNING SCRIPT ./scripts/list.sh @ root@aarvik.dk]
*** - SUCCESS with list.sh at root@aarvik.dk. See ./log/shellconf.log for details.
</del>~~~<del> scripts for root@aarvik.dk completed </del>~~~~~