相关疑难解决方法(0)

59
推荐指数
2
解决办法
10万
查看次数

如何通过SSH远程将命令自动运行到多个服务器并行?

我已经搜索过类似的问题,但除了运行一个命令或者一些命令,例如:

ssh user@host -t sudo su -
Run Code Online (Sandbox Code Playgroud)

但是,如果我基本上需要同时运行一个脚本(比方说)15个服务器.这在bash中是可行的吗?在完美的世界中,我需要尽可能避免安装应用程序.为了论证,让我们说我需要在10个主机上执行以下操作:

  1. 部署新的Tomcat容器
  2. 在容器中部署应用程序并进行配置
  3. 配置Apache vhost
  4. 重新加载Apache

我有一个完成所有这些操作的脚本,但它依赖于我登录所有服务器,从repo中删除脚本,然后运行它.如果这在bash中不可行,你建议用什么替代方案?我是否需要更大的锤子,例如Perl(Python可能是首选,因为我可以保证在RHEL环境中的所有盒子上都有Python,这要归功于yum/up2date)?如果有人能够向我指出任何有用的信息,我将不胜感激,特别是如果它在bash中可行的话.我会满足于Perl或Python,但我只是不知道那些(继续).谢谢!

sysadmin ssh bash command

19
推荐指数
5
解决办法
5万
查看次数

将Bash脚本SSH连接到计算机而不提示密码且不使用密钥

我发现这个问题已被问过几次,但在我搜索的任何地方都找不到相关的答案.

我正在开发环境中工作,安全性不是问题,任何人都可以猜测密码,如果想到几秒钟.

我想做的很简单.我已在我的本地.bashrc文件中创建了一个别名函数,我希望此函数能够自动登录到具有默认密码的计算机.

我目前的实现看起来像这样:

function s () { 
 ssh root@192.168.1.$1
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到这样的东西:

~]s 122

ssh root@192.168.1.122

root@192.168.1.122's password: 
Run Code Online (Sandbox Code Playgroud)

使用Bash,而不使用RSA密钥我想使用默认密码'password'.

我已经尝试了以下IP和用户已经设置的地方.

Do=$(expect -c "
spawn ssh $User@${IP[0]}.${IP[1]}.${IP[2]}.${IP[3]} 
expect \"yes/no\" 
send \"yes\r\" 
expect \"assword\" send \"password\"")
echo $Do
$Do
Run Code Online (Sandbox Code Playgroud)

它给出了以下错误:

Connecting and logging into server using expect
usage: send [args] string
    while executing
"send"
    invoked from within
"expect "assword" send "password""
 Administrator@192.168.1.176's password:
bash: spawn: command not found...
Run Code Online (Sandbox Code Playgroud)

使用以下命令,我可以连接一台机器.如果我删除了交互,它只运行uptime命令并关闭连接.使用interaction命令,我无法看到我正在键入的内容或实际与机器进行交互.有任何想法吗?

Do=$(expect -c "spawn ssh $User@${IP[0]}.${IP[1]}.${IP[2]}.${IP[3]}; set timeout 4; expect \"assword\"; send \"password\n\"; expect …
Run Code Online (Sandbox Code Playgroud)

ssh bash

6
推荐指数
2
解决办法
4万
查看次数

标签 统计

ssh ×3

bash ×2

command ×1

linux ×1

private-key ×1

public-key ×1

sysadmin ×1