ssh 登陆的同时执行脚本
时间: 2023-08-27 13:02:13 浏览: 51
SSH登录的同时执行脚本可以通过在ssh命令中使用参数来实现。参数`-t`可以强制分配伪终端,而`-t`参数后的命令将会在进行 SSH 登录后立即执行。
例如:`ssh -t username@hostname 'command'`,其中`username`为登录用户名,`hostname`为登录目标主机的IP地址或域名,`command`为需要执行的脚本或命令。
如果要执行的是一个脚本文件,可以使用以下形式:
`ssh -t username@hostname 'bash -s' < script.sh`
这样,SSH登录后会启动一个`bash`会话,`-s`参数表示从标准输入中读取命令或脚本,并通过重定向`<`将脚本文件`script.sh`输入到`bash -s`中执行。
如果需要传递参数给脚本,可以在命令中添加参数。例如,下面的命令将在登录后执行`script.sh`并同时传递参数`param1`和`param2`:
`ssh -t username@hostname 'bash -s' < script.sh param1 param2`
以上是通过ssh登录时执行脚本的方法,在连接完成后立即执行指定脚本或命令。
相关问题
centos7 ssh免密登陆脚本
CentOS 7上配置SSH免密登录可以方便我们在服务器之间进行远程操作,提高效率。下面是一个实现CentOS 7 SSH免密登录的脚本:
#!/bin/bash
# 定义变量,替换为实际的IP地址和用户名
IP="服务器IP地址"
USERNAME="用户名"
# 配置本地SSH公钥
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub $USERNAME@$IP
# 修改目标服务器的SSH配置
ssh $USERNAME@$IP "sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config"
ssh $USERNAME@$IP "systemctl restart sshd"
脚本中首先定义了IP地址和用户名的变量,可以根据实际情况进行修改。接着使用ssh-keygen命令生成本地的SSH公钥,并使用ssh-copy-id命令将公钥复制到目标服务器上。这样,在以后的登录过程中,就不再需要输入密码了。
最后,脚本通过SSH远程连接目标服务器,修改目标服务器的SSH配置文件,将密码登录方式改为非密码登录方式,然后重新启动SSH服务。这样,就完成了CentOS 7 SSH免密登录的配置。
使用该脚本的方法非常简单,只需要将IP地址和用户名替换为实际的值,然后使用bash命令执行脚本即可。在执行过程中,会提示输入密码和确认操作,按照提示操作即可完成配置。
需要注意的是,脚本执行过程中可能会涉及到sudo权限的问题,如果没有sudo权限,请确保已经以root用户登录。另外,脚本执行完成后,为了保证安全性,建议手动删除本地的SSH私钥(~/.ssh/id_rsa)和目标服务器上的SSH公钥(~/.ssh/authorized_keys)。
通过以上步骤,我们就可以在CentOS 7上配置SSH免密登录了,以后可以方便地进行远程操作,提高工作效率。
写一个linux自动ssh登陆远程服务器脚本
#!/bin/bash
#自动ssh登陆远程服务器脚本
#定义远程服务器IP地址、用户名、密码
remote_ip=xxx.xxx.xxx.xxx
remote_user=username
remote_password=password
#定义本地ssh密钥存放路径
ssh_key_path=~/.ssh/id_rsa
#定义ssh端口,默认为22
ssh_port=22
#定义要执行的命令
command="ls -l"
#连接远程服务器并执行命令
sshpass -p $remote_password ssh -p $ssh_port -i $ssh_key_path $remote_user@$remote_ip "$command"