我试图在bash脚本中运行sshpass命令,但它无法正常工作.
如果我从终端运行相同的命令它工作正常,但它在bash脚本中运行它没有.
#! /bin/bash
sshpass -p 'password' ssh user@host command
Run Code Online (Sandbox Code Playgroud)
我知道安全问题,但现在并不重要.
有人可以帮忙吗?我错过了什么.
谢谢
小智 14
尝试使用" -o StrictHostKeyChecking = no "选项ssh(" - o"是告诉ssh你将使用选项的标志).即使密钥不在"已知主机"列表中,它也会接受来自ssh连接的任何传入RSA密钥.
sshpass -p 'password' ssh -o StrictHostKeyChecking=no user@host 'command'
Run Code Online (Sandbox Code Playgroud)
1 - 您可以sshpass's ssh像这样编写脚本命令:
#!/bin/bash
export SSHPASS=password
sshpass -e ssh -oBatchMode=no user@host
Run Code Online (Sandbox Code Playgroud)
2 -您可以编写脚本sshpass的sftpcommandlike这样的:
#!/bin/bash
export SSHPASS=password
sshpass -e sftp -oBatchMode=no -b - user@host << !
put someFile
get anotherFile
bye
!
Run Code Online (Sandbox Code Playgroud)
我不明白在从bash脚本文件中给出sshpass之后,已接受的答案如何回答如何在服务器上运行任何命令的实际问题。因此,我提供了一个答案。
在提供了脚本命令之后,执行以下其他命令:
sshpass -p 'password' ssh user@host "ls; whois google.com;" #or whichever commands you would like to use, for multiple commands provide a semicolon ; after the command
Run Code Online (Sandbox Code Playgroud)
在您的脚本中:
#! /bin/bash
sshpass -p 'password' ssh user@host "ls; whois google.com;"
Run Code Online (Sandbox Code Playgroud)