J'ai trouvé cette question qui explique comment modifier un fichier distant avec vim en utilisant:
vim scp://user@myserver[:port]//path/to/file.txt
Est-il possible de le faire en tant que root (via sudo
) sur l'hôte distant?
J'ai essayé de créer un fichier avec des autorisations root sur l'hôte distant et de le modifier avec ce qui précède. Vim peut voir le contenu, le modifier et le sauvegarder, mais rien ne change sur l'hôte distant (probablement parce que vim enregistre simplement son fichier temporaire et le donne ensuite à scp pour le remettre?)
Lorsque vous faites cela avec un fichier enregistré par mon utilisateur, il se comporte comme prévu.
Mon SSH utilise une clé pour s'authentifier et le serveur distant a NOPASSWD pour mon accès sudo
Cette question est similaire, mais la seule réponse avec des votes utilise une marionnette qui n'est certainement pas ce que je veux utiliser.
Edit: En réponse au commentaire de @ drewbenn ci-dessous, voici mon processus complet d'édition:
vim scp://nagios//tmp/notouch
Où /tmp/notouch
est le fichier appartenant à root, je vois vim rapidement montrer
:!scp -q 'nagios:/tmp/notouch' '/tmp/vaHhwTl/0'
Cela disparaît automatiquement pour donner un écran noir vide avec le texte
"/tmp/vaHhwTl/0" 1L, 12C
Press ENTER or type command to continue
Appuyer sur Entrée me permet de modifier le fichier
L'enregistrement fait apparaître le même type de commande scp que le début, qui disparaît rapidement et automatiquement (il est difficile de le lire à temps mais les fichiers scp et / tmp / ... sont définitivement là)
ssh
sur le serveur et éditez-y le fichier (avecvisudo
ou autre). Tout autre élément a des implications sur la sécurité..vimrc
fichierssh -t host sudo vim file
?Réponses:
Je vais dire que ce n'est pas possible car
vim
n'exécute pas de commandes à distance. Il utilise simplementscp
pour copier le fichier, le modifier localement etscp
le récupérer une fois terminé. Comme indiqué dans cette question,sudo
viascp
n'est pas possible et il est recommandé de modifier les autorisations pour accomplir ce que vous voulez ou simplement de passer par ssh sur la machine distante.la source
Comme la réponse acceptée, je ne pense pas que ce soit possible directement.
Cependant, je vois au moins deux façons d'atteindre encore votre objectif.
Exécuter vim à distance
Cela présente des inconvénients:
Mais il a l'avantage de fonctionner.
Faire le scp en dehors de vim
Vous pouvez simplement copier le fichier localement, le modifier et le recopier. Et vous pouvez automatiser cela pour le rendre presque aussi transparent que le support scp de vim.
Quelque chose comme le script shell suivant pourrait fonctionner (notez, entièrement non testé!):
Cela vous permettrait de faire quelque chose comme
rvim user@myserver /some/file
. Il conserve même la copie locale si le deuxième transfert échoue, vous ne perdez donc pas vos modifications.Le script pourrait utiliser de nombreuses améliorations (à tout le moins la vérification des erreurs), mais c'est un point de départ.
la source
Vous auriez besoin du mot de passe root ou de votre clé ssh publique dans ~ root / .ssh / authorized_keys. Une fois que vous avez eu ça, vous pourriez probablement faire
Bottom line: ce n'est en fait qu'un raccourci pour
Si vous avez l'accès nécessaire pour le faire, vous avez alors l'accès nécessaire pour utiliser le plugin d'accès réseau de vim. Sinon, vous ne le faites pas.
Comme le souligne Zachary Brady, il
sudo
n'est pas impliqué. Vous aurez besoin d'un accès ssh au compte root.L'as tu essayé?
la source
ssh remotesystem sudo vim file