comment lire et modifier fstab en python?


8

Je souhaite configurer automatiquement mon entrée fstaben pythonexécutant un script. J'ai pensé à l'utiliser ConfigParserdans python, mais je ne peux pas l'utiliser correctement.


1
J'ai voté pour migrer cela vers StackOverflow. Vous parlez peut-être d'éditer un fichier particulier sur un système d'exploitation * nix, mais vous demandez à le faire dans un langage de programmation (ce qui signifie, pour moi, que la réponse concerne plus la programmation qu'avec * nix).
HalosGhost

1
La programmation shell @HalosGhost consiste souvent à éditer un fichier particulier et elle est toujours dans un langage de programmation, tant que c'est à des fins administratives U&L, je ne pense pas que nous devrions déplacer toutes ces questions.
Anthon

@Anthon, les shells sont souvent spécifiques à * nix. Ce n'est pas une question de programmation shell, c'est une question Python. Mais, je n'ai pas la capacité de migrer; ce n'était qu'un vote.
HalosGhost

Réponses:


9

Vous pouvez utiliser le module fstab .

Sa documentation ici .

Exemple:

fstab = Fstab()

for entry in fstab.entries:
    pprint.pprint(entry)

5

Cela ne fonctionnera pas car le /etc/fstabfichier n'est pas conforme au format pris en charge par ConfigParser.

Comme man 5 fstabindiqué, le /etc/fstabfichier est un fichier séparé par des espaces avec 6 colonnes. Le Python ConfigParser est une bibliothèque pour analyser des fichiers communément appelés .inifichiers qui, simplifiés, se composent de sections qui contiennent des paires clé / valeur:

 [section_name1]
 key1 = value1
 key2 = value2
 [section_name2]
 key3 = value3

L'analyse du fstabfichier vous-même est relativement facile. Copiez simplement toutes les lignes de commentaires (celles avec le premier caractère non blanc '#') et divisez les autres lignes en utilisant .split()les 6 champs. J'utilise cela pour réorganiser mon fstabfichier en 79 colonnes seulement.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.