有时候在linux本机或Xshell上执行命令或脚本时可以顺利执行,但是当利用代码远程调用时却报找不到命令,这时我们在要执行的命令前加上:
source /etc/profile
1.拿python中的paramiko模块为例
class TransportClient(object):
def __init__(self, host, port, username, password):
self.trans = paramiko.Transport((host, port))
self.connect = self.trans.connect(username=username, password=password)
self.ssh = paramiko.SSHClient()
self.ssh._transport = self.trans
def exec_command(self, cmd):
stdin, stdout, stderr = self.ssh.exec_command(cmd, get_pty=False)
print stdout
return stdout
def exec_commands(self, cmds):
for i in cmds:
stdin, stdout, stderr = self.ssh.exec_command(i, get_pty=False)
def close_ssh(self):
self.trans.close()
调用时:
start = "source /etc/profile;nohup java -jar /mnt/test.jar &"
ssh.exec_command(start)
2.在远程调用脚本时,在执行的命令前加入该命令,如start.sh
#!/bin/bash
source /etc/profile
nohup java -jar test.jar &