1 votos

plistbuddy valor de comando de csv, de búsqueda e introduzca

Tengo un plistbuddy comando que tengo que ejecutar para 100 usuarios diferentes.

El valor que tengo que entrar por los 100 usuarios individuales depende del nombre de host.

Yo estaba pensando que podría utilizar un archivo csv que contiene una lista de los nombres de host/computernames y la correspondiente plist valor, a continuación, utilizar una secuencia de comandos de shell:

  1. Compruebe el nombre de host de la Mac
  2. Encontrar el nombre de host en el archivo csv
  3. encontrar el valor de la correspondiente código necesario para la plistbuddy comando y guardarlo en una variable
  4. insertar el valor en el plistbuddy de comandos y ejecutar, modificar el valor de la deseada archivo plist.

El csv acaba de ser formateado como:
nombre de host, el código de
hostname1, 2001
hostname2, 2002

Específicamente el archivo plist es la impresora de preferencia archivo plist.

Aquí está el plistbuddy comando:

/usr/libexec/PlistBuddy -c "Set :2ndfloor:com.apple.print.preset.settings:ManagementCodeValue 1001" ~/Library/Preferences/com.apple.print.custompresets.forprinter.CMI2ndFloorColor.plist

El valor que necesita cambiar dependiendo el nombre de host es el valor de "1001" en ese comando.

Esos son los únicos elementos; verificación de nombre de host, encontrará en el csv, ejecutar el plistbuddy comando usando el código correspondiente en el csv.

Alguien tiene alguna idea buena para esto? Esto ahorrará horas y horas de GUI de trabajo.

2voto

creidhne Puntos 176

Aquí está una línea de tres script de shell para bash. Suponga que el archivo CSV se denomina hosts.csv.

h=`hostname -s`
c=`sed -nE -e "/^$h, ?/s/^.+, ?//p" hosts.csv`
/usr/libexec/PlistBuddy -c "Set :2ndfloor:com.apple.print.preset.settings:ManagementCodeValue $c" ~/Library/Preferences/com.apple.print.custompresets.forprinter.CMI2ndFloorColor.plist

La secuencia de comandos conjuntos de las variables de shell $h a el nombre de host, y $c con el código que coincide con el host. Obtener el nombre del host de la hostname comando. Uso $c en lugar del valor "1001" en la PlistBuddy comando.

Por defecto, el hostname comando devuelve información del dominio. Por lo tanto, si el archivo CSV tiene los nombres de host sin información del dominio, uso h=`hostname -s`, de lo contrario usar h=`hostname`.

El sed comando coincide con una línea del archivo CSV que se inicia con la $h nombre de host seguido por una coma y un opcional carácter de espacio. Para la línea que coincide con, sed quita todo, pero el código de la línea.

2voto

Usted puede utilizar `` para procesar el archivo y encontrar el valor de código coincidente.

El parte busca la línea donde el primer valor es igual al nombre de host e imprime el segundo valor de la línea. Como no puede haber ninguna coincidencia, el parte asegura que `` sólo se llama si se encontró un valor de código.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X