ansible 10.251.53.72 -S -R root -m shell -a "echo $history | tail -1 | grep gsadmin" 纠正错误
时间: 2025-01-04 18:39:13 浏览: 3
在使用Ansible 10.251.53.72 远程执行shell命令时,你提供的命令结构存在一些错误,因为直接在`-a`选项中尝试运行完整的Shell命令是不安全的,尤其是涉及到`$history`这样的变量引用。另外,你还需要指定一个用户名(如`-u`),而不是`-R`。这里提供一个修正后的版本:
```yaml
---
- hosts: 10.251.53.72
gather_facts: false # 假设不需要收集目标机器的事实信息
connection: ssh
tasks:
- name: Get the last line with 'gsadmin' from history (as root)
become: yes # 需要以root权限运行
remote_user: root # 使用root用户登录
shell: |
export HISTCONTROL=ignoreboth
echo $HISTORY | tail -1 | grep 'gsadmin'
register: shell_output
```
这里是修正后的解释:
1. 使用`connection: ssh`表示通过SSH连接到目标主机。
2. 添加`become: yes`来表明需要执行任务作为root用户。
3. 将`-R root`替换为`remote_user: root`,指定远程用户的用户名。
4. 使用`export HISTCONTROL=ignoreboth`来设置历史记录控制,避免可能的安全风险。
5. 将原始shell命令放在`shell:`块中,这样Ansible会更安全地执行。
现在命令会在目标主机上执行,并输出匹配`gsadmin`的最后一行历史记录。
阅读全文