我有以下任务:
我用谷歌搜索了好几天,但似乎找不到解决方案。
这里提出的解决方案:ssh到服务器并切换用户并更改目录
ssh -t username@hostname "sudo su - otheruser -c \"cd /path/to/directory && command\""
Run Code Online (Sandbox Code Playgroud)
不起作用,因为 sudo 在服务器上被禁用:
有人有解决办法吗?
通过 SSH 登录(作为非特权用户),然后运行不带任何参数的命令su以更改为 root 用户。您将需要 root 密码才能执行此操作。然后运行您想要运行的任何命令。
编辑:如果您想在一行中完成此操作,您可以使用以下命令:
ssh username@hostname "su -c \"code_here\""
如果这不起作用,请确保通过passwd以 root 身份运行来启用 root 密码。这将要求您输入新的 root 密码。
额外:要以除 root 之外的其他用户身份运行命令(请注意,这需要目标用户的密码):
ssh username@hostname "su - username_of_target -c \"code_here\""
小智 4
也许有些偏离主题,但这可以通过 Python 和paramiko模块来实现:
#!/usr/bin/python2
import time
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('127.0.0.1', port=22, username='user', password='pass')
stdin, stdout, stderr = ssh.exec_command('su')
time.sleep(0.1) # some enviroment maybe need this.
stdin.write('root_password_goes_here\n')
[ add extra code here to execute a command ]
stdin.flush()
print (stdout.readlines())
ssh.close()
Run Code Online (Sandbox Code Playgroud)
应该注意的是,从安全角度来看,将密码存储在脚本中通常是一个坏主意。确保您为脚本设置了适当的权限(例如 chmod 740)
| 归档时间: |
|
| 查看次数: |
58676 次 |
| 最近记录: |