Eu encontrei esta pergunta que explica como editar um arquivo remoto com o vim usando:
vim scp://user@myserver[:port]//path/to/file.txt
É possível fazer isso como root (via sudo
) no host remoto?
Eu tentei criar um arquivo com permissões de root no host remoto e editá-lo com os itens acima. O Vim pode ver o conteúdo, editá-lo e salvá-lo, mas nada muda no host remoto (provavelmente porque o vim está apenas salvando seu arquivo temporário e depois entregando ao scp para colocar de volta?)
Ao fazer isso com um arquivo salvo pelo meu usuário, ele se comporta conforme o esperado.
Meu SSH usa uma chave para autenticar e o servidor remoto possui NOPASSWD para acesso ao meu sudo
Essa pergunta é semelhante, mas a única resposta com votos usa fantoches, que definitivamente não é o que eu quero usar.
Edit: Em resposta ao comentário de @ drewbenn abaixo, aqui está o meu processo completo de edição:
vim scp://nagios//tmp/notouch
Onde /tmp/notouch
o arquivo pertence ao root, vejo o vim mostrar rapidamente
:!scp -q 'nagios:/tmp/notouch' '/tmp/vaHhwTl/0'
Isso desaparece automaticamente para gerar uma tela preta vazia com o texto
"/tmp/vaHhwTl/0" 1L, 12C
Press ENTER or type command to continue
Pressionar enter permite editar o arquivo
O salvamento exibe o mesmo tipo de comando scp do início, que desaparece rápida e automaticamente (é difícil lê-lo a tempo, mas os arquivos scp e / tmp / ... estão definitivamente lá)
ssh
no servidor e edite o arquivo lá (comvisudo
ou o que for). Qualquer outra coisa tem implicações de segurança..vimrc
arquivo #ssh -t host sudo vim file
?Respostas:
Vou dizer que isso não é possível porque
vim
não está executando comandos remotos. É simplesmente usarscp
para copiar o arquivo, editá-lo localmente escp
voltar quando estiver pronto. Conforme declarado nesta pergunta,sudo
viascp
não é possível e é recomendável que você modifique as permissões para realizar o que deseja ou apenas faça o ssh na máquina remota.fonte
Como a resposta aceita, não acho que isso seja possível diretamente.
No entanto, vejo pelo menos duas maneiras de ainda atingir seu objetivo.
Executando o vim remotamente
Isso tem desvantagens:
Mas tem a vantagem de trabalhar.
Fazendo o scp fora do vim
Você pode simplesmente copiar o arquivo localmente, editá-lo e copiá-lo novamente. E você pode automatizar isso para torná-lo quase tão perfeito quanto o suporte scp do vim.
Algo como o seguinte script de shell pode funcionar (observe, totalmente não testado!):
Isso permitiria que você fizesse algo assim
rvim user@myserver /some/file
. Ele ainda mantém a cópia local se a segunda transferência falhar, para que você não perca as alterações.O script pode usar muitas melhorias (no mínimo, na verificação de erros), mas é um ponto de partida.
fonte
Você precisaria da senha root ou teria sua chave pública ssh em ~ root / .ssh / allowed_keys. Depois de ter isso, você provavelmente poderia fazer
Conclusão: este é efetivamente apenas um atalho para
Se você tiver o acesso necessário para fazer isso, terá o acesso necessário para usar o plug-in de acesso à rede do vim. Se não, então você não.
Como Zachary Brady aponta,
sudo
não está envolvido. Você precisará de acesso ssh à conta raiz.Tentaste?
fonte
ssh remotesystem sudo vim file