如何使用密码登录远程用户帐户并执行一组命令?

如何使用密码登录远程用户帐户并执行一组命令?

我想在远程机器上执行命令。远程用户需要密码验证。使用以下示例脚本时出现以下错误,这是示例脚本 applmgr.sh 的内容

#!/bin/bash    
ssh [email protected] -c "cd ; touch testing ; cp testing testing_is ;mv testing 
working" <<!
applmgr      ## Password of applmgr user##
!

执行时,它给出以下消息,

[oracle@dbsrvr ~]$ sh applmgr.sh
standard in must be a tty

答案1

将密码放入脚本中是一种非常糟糕的安全做法。但如果你必须这样做的原因,您可以使用诸如用于此目的的工具sshpass

不过,我强烈建议您考虑对此类作业使用密钥对身份验证。

如果您在主机上a.example.com并且有要运行的作业b.example.com,则可以使用以下命令进行设置:

  • ssh-keygen- 这将创建一个用于身份验证的公钥/私钥对
  • ssh-copy-id [email protected]- 这将在远程主机上设置您的公钥以供使用。运行此命令时,系统会要求您输入密码,但此后将使用密钥进行身份验证。

从那时起,您可以使用eg在远程主机上运行。ssh [email protected] 'command'command

答案2

看看expect命令,这是为与应用程序交互并模拟用户行为而构建的系统。

(当然,放弃密码而使用密钥才是真正的解决方案)

相关内容