We have exercised SSH by using the command line program in order to access a remote Linux server.
Now, we further explore doing so via programmatic means in Python.
Check out .
It provides a comprehensive wrapper for doing things over SSH such as uploading and download files (via SCP) as well as executing remote commands. It references this . However, it is not as “conda friendly” as it should be and has a bug.
Use the following instructions to successfully execute the code.
- clone the repository and change directory into it
$ git clone
$ cd paramiko-tutorial - Add this file to the repository
- Create and activate your environment (if you already have a comp835 env, update the name in the yml file accordingly) $ conda env create -f environment.yml
$ conda activate comp835 - Add a .env file to the root directory which looks like the following with your respective environment variables replaced: REMOTE_HOST=3.90.20.34
REMOTE_USERNAME=unhusernamelogin
REMOTE_PASSWORD=
SSH_KEY_FILEPATH=/Path/To/Comp835/Private/Key/comp835s21m1
REMOTE_PATH=/home/unhusernamelogin - Replace this snippet from paramiko_tutorial/__init__.py remote.execute_commands(
[
“cd /var/www/ && ls”,
“tail /var/log/nginx/access.log”,
“ps aux | grep node”,
“cd /uploads/ && ls”,
]
)
with simply this: remote.execute_commands(
[
“ls -l”,
]
) - Then replace line 106 in paramiko_tutorial/client.py. From: stdin, stdout, stderr = self.client.exec_command(cmd)
to stdin, stdout, stderr = self.connection.exec_command(cmd) - And then execute the main python main.py
If needed, use a “git status” and “git diff” to confirm your changes. Note that the .gitignore will ignore the .env.
It should look like this:
(comp835) Tims-MacBook-Pro:paramiko-tutorial proftim$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: paramiko_tutorial/__init__.py
modified: paramiko_tutorial/client.py
Untracked files:
(use "git add <file>..." to include in what will be committed)
environment.yml
For your submission, provide the git diff output as well as the output from successfully having run the code in a rich text document (rtf file format).
Attempt 1Comments