情况是这样的,我在大学里有一台没有连接到互联网的集群。我还有另一台连接到互联网的计算机。
我想通过计算机 ssh 到集群并执行命令并获取结果并通过电子邮件发送给我,以便我可以从家里检查状态。这意味着我需要一个 bash 脚本,该脚本使用密码 ssh 到集群登录并运行命令并获取结果并将结果通过电子邮件发送给我。
谢谢。
答案1
我最终可以使用 Python 代码来实现这一点:
import paramiko
import time
import os
def touch(path):
with open(path, 'a'):
os.utime(path, None)
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('ip', port=port, username='USER', password='PASS',
key_filename='OPTIONAL Address to private Key')
baseCommand = "command"
stdin, stdout, stderr = ssh.exec_command('some command')
print(stdout.readlines())
stdin, stdout, stderr = ssh.exec_command(baseCommand + 'ls')
print(stdout.readlines())
#for copy file
localpath = "local paths" + time.strftime("%Y-%m-%d-%H-%M-%S") + ".sql"; # add a date name for file
remotepath = "remote path"
touch(localpath);
sftp.get(remotepath, localpath) # download the file
sftp.close()
ssh.close()