我正在尝试在远程服务器上运行本地bash
脚本,而不将其复制到远程服务器中。测试目的如下所示。有很多服务器可以完美地运行它,但在一些运行tcsh
的服务器中,存在问题。若以下内容不起作用,我该如何调用bash
。下面是伪test.sh
#!/bin/bash
a=test
echo $a
echo $SHELL
我使用Python Paramikoexec_command
进行远程执行,如下所示:
my_script = open("test.sh").read()
stdin, stdout, stderr = ssh.exec_command(my_script, timeout=15)
print(stdout.read().decode())
err = stderr.read().decode()
if err:
print(err)
假定该连接有效,并且相同的脚本适用于具有bash
默认shell的其他服务器。
这是我得到的输出:
/bin/tcsh
printing from errors
a=test: Command not found.
a: Undefined variable.
#!/bin/bash
是一个注释。将其作为命令发送到远程shell没有任何效果。
您必须在服务器上执行/bin/bash
并将脚本发送到它:
stdin, stdout, stderr = ssh.exec_command("/bin/bash", timeout=15)
stdin.write(my_script)
此外,您必须在脚本末尾exit
shell,否则它将永远不会结束。
相关问题:
将参数传递给本地存储的bash脚本,该脚本需要使用Python Paramiko 在远程机器上执行