通过远程ssh运行完整的命令
通过远程ssh运行完整的命令
我正在尝试创建一个在我的远程服务器的每日cron作业上运行的bash脚本,以便自动通过ssh登录到另一台UNIX机器,运行一些命令,然后退出。\n
#!/bin/bash ssh machinehost.com -l admin -p 2222 " if [ $(ls /share/Public/backups/set1 -1 | wc -l ) -gt 4 ]; then /usr/bin/find /share/Public/backups/set0 -mtime +14 | xargs rm -f; /usr/bin/find /share/Public/backups/set1 -mtime +4 | xargs rm -f; /usr/bin/find /share/Public/backups/set2 -mtime +3 | xargs rm -f; /usr/bin/find /share/Public/backups/set3 -mtime +21 | xargs rm -f; /usr/bin/find /share/Public/backups/set4 -mtime +2 | xargs rm -f; /usr/bin/find /share/Public/backups/set5 -mtime +2 | xargs rm -f; fi "
\n我的问题是,我需要修改现有的代码以在每个命令之前执行一些更复杂的操作,例如:\n
if [ $(ls /share/Public/backups/set1 -1 | wc -l ) -gt 4 ]; then 运行上述命令 fi
\n我应该如何在远程ssh机器上运行此命令,而不是在本地cron上运行?
问题:Running full commands through remote ssh出现的原因以及解决方法
在使用远程ssh时,有时候我们需要运行完整的命令,但是可能会遇到一些问题。这篇文章将介绍出现这个问题的原因以及解决方法。
出现的原因:
1. 远程ssh服务器可能会限制只能运行特定的命令,而不允许运行完整的命令。
2. 远程ssh服务器可能会遇到特殊字符或者命令的语法问题,导致无法正确解析完整的命令。
解决方法:
1. 使用python的pexpect模块。这个模块可以解决这个问题,甚至可以处理更复杂的场景。
下面是一个使用pexpect解决这个问题的例子:
import pexpect # 创建一个ssh连接 ssh = pexpect.spawn('ssh user@remote_host') # 等待ssh提示符 ssh.expect('password:') # 输入密码 ssh.sendline('your_password') # 等待shell提示符 ssh.expect('shell_prompt$') # 发送完整的命令 ssh.sendline('your_full_command') # 等待命令执行完成 ssh.expect('shell_prompt$') # 打印命令执行结果 print(ssh.before) # 关闭ssh连接 ssh.close()
通过使用pexpect模块,我们可以模拟一个ssh会话,并且发送完整的命令。这样就可以解决无法运行完整命令的问题。
在使用远程ssh时,有时候我们会遇到无法运行完整命令的问题。这可能是因为远程ssh服务器限制了命令的运行,或者遇到了特殊字符或语法问题。使用python的pexpect模块可以解决这个问题,通过模拟ssh会话并发送完整的命令来解决这个问题。
在使用远程ssh运行完整命令时,可能会出现一些问题。下面将介绍问题的原因以及解决方法。
问题原因:
通常情况下,我们可以通过ssh远程连接到其他机器,并在该机器上运行命令。然而,有时候我们可能需要在远程机器上运行完整的命令。这可能会导致一些问题,例如命令中包含特殊字符或需要在远程机器上执行的命令较长。
解决方法:
为了解决这个问题,我们可以编写一个脚本,并将其复制到远程机器上,然后通过ssh仅运行该脚本。以下是解决方法的步骤:
1. 编写一个脚本:首先,我们需要编写一个脚本,该脚本包含我们想要在远程机器上运行的完整命令。确保脚本中的命令正确无误,并且已经经过测试。
2. 将脚本复制到远程机器:使用scp命令将脚本从本地机器复制到远程机器上。例如,如果脚本名为script.sh,本地路径为/local/path/script.sh,远程路径为/remote/path/script.sh,可以使用以下命令进行复制:
scp /local/path/script.sh user@remote:/remote/path/script.sh
3. 运行脚本:通过ssh连接到远程机器,并运行刚刚复制的脚本。例如,如果远程机器的用户名为user,远程路径为/remote/path/script.sh,可以使用以下命令连接并运行脚本:
ssh user@remote '/remote/path/script.sh'
通过以上步骤,我们可以在远程机器上运行完整的命令,而无需担心特殊字符或命令长度问题。这种方法非常适用于需要在远程机器上自动化执行一系列命令的情况。
通过编写脚本并将其复制到远程机器上,我们可以解决在远程机器上运行完整命令时可能出现的问题。这种方法可以确保命令的正确性,并且可以避免特殊字符或命令长度的限制。希望这个解决方法对你有所帮助!