3 votos

Secuencia de comandos de Shell de ayuda

Soy nuevo en la escritura de secuencias de comandos de shell de Unix y necesita un poco de ayuda. No estoy seguro de por qué cURL ahora, de repente, después de ejecutar la secuencia de comandos es la descarga corrompe a los paquetes que no pueden ser montados y por qué la ejecución de los comandos por separado en la Terminal de trabajo, pero durante la secuencia de comandos de todo lo anterior falla, tales como

Para rizar viene de vuelta diciendo: comando no encontrado Para el comando mv dice que no puede encontrar el archivo o el directorio y, por supuesto, el montaje y todo lo que a partir de entonces fallar.

Podría usted por favor, eche un vistazo a la secuencia de comandos de shell para ver lo que falta o que estoy haciendo mal?

#!/bin/sh
#Machines must have cURL installed as a prerequisite to download software from internet or FTP server 

# grab files from www.teamviewer.com or custom FTP server
curl -O http://download.teamviewer.com/download/TeamViewerHost.dmg

# grab TeamViewer from custom FTP server
curl -O https://www.dropbox.com/s/***********/com.TeamViewer8.Settings.plist

# Wait for download
sleep 30s

# Place customized plist file into Library/Preferences
mv ~/Downloads/com.TeamViewer8.Settings.plist /Library/Preferences/

# Mount and Install TeamViewer
hdiutil mount ~/Downloads/TeamViewerHost.dmg
installer -pkg /Volumes/TeamViewerHost/Install\ TeamViewerHost.pkg -target /

# Unmount package
hdiutil unmount /Volumes/TeamViewerHost/

7voto

shsteimer Puntos 8749

Para rizar viene de vuelta diciendo: comando no encontrado

Usted necesita para resolver esto primero. cURL de buques por defecto con OS X 10.9 y debe estar en su PATH suponiendo que no mono con el PATH variable de entorno. Trate de llamar directamente con:

/usr/bin/curl

en la secuencia de comandos en su lugar. También:

which curl

en un Terminal mostrará la ruta de acceso completa a la curl comando en el entorno actual.

Con respecto a:

curl -O http://download.teamviewer.com/download/TeamViewerHost.dmg

El -O opción le dice curl para guardar la salida en un archivo en el directorio de trabajo actual. Eso significa que si no estás en ~/Downloads cuando se ejecuta este comando, el archivo no se guarda en ~/Downloads. Usted debe agregar un:

cd ~/Downloads

la línea antes de llamar a la curvatura o comandos de uso -o <filename-with-a-path> a guardar el archivo en una ubicación específica con un nombre específico.

Usted debe ajustar también la Url entre comillas (")- esto deja de shell de caracteres especiales en la Url, como & de ser interpretados por el shell y causando la URL enviada a curl para ser incorrecta.

Este:

sleep 30s

en completamente innecesario. El curl de llamadas no volver hasta que se hayan descargado por completo los archivos. Nota: van a volver si ellos fallan para descargar los archivos. Puede que desee considerar la posibilidad de la comprobación de la ext códigos de la curvatura de las llamadas o de la existencia de los archivos después de llamar curl para asegurarse de que se ejecutó correctamente. O considere la posibilidad de agregar set -e a la parte superior de la secuencia de comandos de modo que la secuencia de comandos de salidas si cualquier comando devuelve un valor distinto de cero código de salida.

Finalmente:

Para el comando mv dice que no puede encontrar el archivo o el directorio y del curso de montaje y todo lo que a partir de entonces fallar.

Su mv llamada está fallando debido a su curvatura llamadas están fallando y no la descarga de los archivos, como se esperaba. Corrección de la curvatura de las llamadas y te vas a solucionar el mv llamada.

3voto

Goldorak84 Puntos 116

Esto debería funcionar. No tengo tiempo actualmente para explicar los cambios y adiciones, pero voy a actualizar. Debe ejecutar este script como sudo para que funcione.

Aún más fácil, sudo chmod +s yourscript - se ejecuta como root sin necesidad de contraseña.

#!/bin/bash

#Machines must have cURL installed as a prerequisite to download software from internet or FTP server 

#Change to your working directory. 
cd ~/Downloads

#grab files from www.teamviewer.com or custom FTP server
curl -O http://downloadus3.teamviewer.com/download/TeamViewerHost.dmg

#grab TeamViewer from custom FTP server
curl -O https://www.dropbox.com/s/******/com.apple.TeamViewer8.Settings.plist

#Place customized plist file into Library/Preferences
mv ~/Downloads/com.apple.TeamViewer8.Settings.plist /Library/Preferences/

#Mount and Install TeamViewer
hdiutil mount ~/Downloads/TeamViewerHost.dmg
installer -pkg /Volumes/TeamViewerHost/Install\ TeamViewerHost.pkg -target LocalSystem

#Softkill process in order to unmount package
ps aux | grep -i TeamViewer | awk {'print $2'} | xargs kill

#Unmount package
hdiutil unmount /Volumes/TeamViewerHost/

2voto

T888 Puntos 1

Esto debería funcionar:

#!/bin/sh
#Machines must have cURL installed as a prerequisite to download software from internet or FTP server 

# grab files from www.teamviewer.com or custom FTP server
cd ~
curl -O http://downloadus3.teamviewer.com/download/TeamViewerHost.dmg

# grab TeamViewer from custom FTP server
curl -O https://www.dropbox.com/s/***********/com.TeamViewer8.Settings.plist

# Place customized plist file into Library/Preferences
mv ~/com.TeamViewer8.Settings.plist /Library/Preferences/

# Mount and Install TeamViewer
hdiutil mount ~/TeamViewerHost.dmg
installer -pkg /Volumes/TeamViewerHost/Install\ TeamViewerHost.pkg -target /

# Unmount package
hdiutil unmount /Volumes/TeamViewerHost/

Su vínculo para descargar TeamviewerHost devuelto

<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="http://downloadus3.teamviewer.com/download/TeamViewerHost.dmg">here</a>.</h2>
</body></html>

cuando comencé a leer el archivo, así que he cambiado el enlace.

1voto

fallenidol Puntos 494

Gracias por toda la ayuda chicos. Tomando todo en cuenta, desde el impresionante sugerencias gracias a Steve, Ian, orkoden y njboot aquí es el resultado de la secuencia de comandos que funciona. Me gustaría saber cómo aplicar el error de comprobación de que Ian había sugerido, así que he añadido el set-eux.

#!/bin/sh
#sudo chmod +s "scriptname" - will run as root without requiring password
#Machines must have cURL installed as a prerequisite to download software from internet or FTP server 

#Stop script when first command fails
set -eux

#Change to your working directory. 
cd ~/Downloads

#grab TeamViewer version 8.dmg package and plist files from custom FTP server or TeamViewer website
curl -O "https://www.dropbox.com/s/*************/com.TeamViewer8.Settings.plist" #file located in location ~/Library/Preferences/
curl -O "https://www.dropbox.com/s/*************/com.teamviewer.teamviewer.plist" #file located in location ~/Library/LaunchAgents/
curl -O "https://www.dropbox.com/s/*************/com.teamviewer.teamviewer_desktop.plist" #file located in location ~/Library/LaunchAgents/

#version 8 download first for installation prior to version 9
curl -O "http://download.teamviewer.com/download/version_8x/TeamViewerHost.dmg"

#Place customized plist file into Library/Preferences and Library/LaunchAgents/
mv ~/Downloads/com.TeamViewer8.Settings.plist ~/Library/Preferences/
mv ~/Downloads/com.teamviewer.teamviewer.plist ~/Library/LaunchAgents/
mv ~/Downloads/com.teamviewer.teamviewer_desktop.plist ~/Library/LaunchAgents/

#Mount and Install TeamViewer version 8
hdiutil mount ~/Downloads/TeamViewerHost.dmg
installer -pkg /Volumes/TeamViewerHost/Install\ TeamViewerHost.pkg -target LocalSystem

#Softkill process in order to unmount package
ps aux | grep -i TeamViewer | awk {'print $2'} | xargs kill

#Unmount package
hdiutil unmount /Volumes/TeamViewerHost/

#version 9 upgrade 
cd ~/Downloads
curl -O "http://downloadus3.teamviewer.com/download/TeamViewerHost.dmg"

#Mount and Install TeamViewer version 9
hdiutil mount ~/Downloads/TeamViewerHost.dmg
installer -pkg /Volumes/TeamViewerHost/Install\ TeamViewerHost.pkg -target LocalSystem

#Softkill process in order to unmount package
ps aux | grep -i TeamViewer | awk {'print $2'} | xargs kill

#Unmount package
hdiutil unmount /Volumes/TeamViewerHost/

El propósito de la secuencia de comandos es encontrar una manera de implementar TeamViewer 9 a través de ssh y el terminal de forma automática sin tener que instalar 3rd party software, como se sugiere en los siguientes enlaces:

http://jdmsysadmin.wordpress.com/2013/09/27/configuring-teamviewer-host-to-be-deployable-via-managed-software-update-munki-on-mac-os-x/

http://jdmsysadmin.wordpress.com/2014/04/16/configuring-teamviewer-host-9-to-be-deployable-with-munki/

0voto

beroe Puntos 1605

En primer lugar, tratar de poner comillas alrededor de su Url para curl y el resto de los comandos. Dentro de la secuencia de comandos de shell, la puntuación puede causar problemas.

También el cambio de la primera línea a #!/bin/bash en lugar de enviarlo a sh.

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