Macで次のUnixコマンド(スクリプト?)を実行するにはどうすればよいですか?


0

私は、在庫を追跡するために使用するプログラムが10月31日のEOLになると非常に遅く通知された状況にあります。約400台のMacコンピューターがあり、古いバージョン(必要ではありませんが適切)をアンインストールして、最新バージョンをインストールする必要があります。私はこのためにARDを使用したいと考えています(Apple Remote Desktop)が、最初にスクリプトを動作させる必要があります。

Jampfはコストのためにオプションではありません。私はMacの人ではないので、バッチファイルは特にWindowsのものであることがわかりました。以下は、フォーラムで提案されたスクリプトです。ネットワーク共有にファイルを保存しました。提案されたUnixコマンドと、明らかな置換を使用して使用しようとしているコマンドを示します。

  • 推奨: cd /Users/Shared/ ; curl -k -O https://server.hostingyourfiles.com/samanage.zip ; unzip samanage.zip ; /Users/Shared/samanage/Samanage_Agent_*.app/Contents/MacOS/installbuilder.sh --mode unattended ; rm -rf /Users/Shared/samanage/

  • 私の: cd /Users/Shared/ ; curl -k -O smb://word.word/word/word Mac/Samanage_Agent_1.1.72_1.1.37_203_30_installer ; unzip samanage.zip ; /Users/Shared/samanage/Samanage_Agent_*.app/Contents/MacOS/installbuilder.sh --mode unattended ; rm -rf /Users/Shared/samanage/

上記により、ターミナルにUnixコマンドを貼り付けると、次のエラーが表示されます。

curl:(67) login denied
curl: (6) Could not resolve host: Mac
unzip: cannot find or open samanage.zip
-bash /users/shared/samanage/smanage_agent app/contents/macos/installbuilder.sh: no such file or directory

URLにする必要がありますか?ARDを使用した最も効率的な方法でさえ、スクリプトを使用していますか?スクリプトなしでARDを使用して新しいインストールをプッシュすることはできますか?このすべてをバイパスして、インストーラーをユーザーにメールで送信する必要がありますか?このテーマに関する私の無知を失礼し、助けを事前に感謝します。

回答:


1

スクリプトのバージョンには2つの大きな問題があります。

  • SMBでは一般に認証が必要です。最初のエラー「curl:(67)login denied」は、これが失敗したことを示しています。クライアントが既にサーバーに対して認証され、関連するフォルダーがマウントされている場合でも、サーバーへのcurl独自の接続を試み、その上にファイルをダウンロードしようとすることに注意してください。ファイルをゲストがアクセスできる場所に配置する必要があります(HTTPサーバーはおそらくSMBより簡単です)か、クライアントに取得する別の方法を見つける必要があります。

    ARDは実際にはここのオプションです。[管理]メニューまたはツールバーの[コピー]ボタンの下にある[アイテムのコピー]オプションを使用して、ファイルを管理ステーションからクライアントにコピーし、別のステップとしてインストールスクリプトを実行できます。また、ARDはフォルダー構造全体をコピーできるため、.zipファイルを送信して各クライアントで展開する必要はありません。展開されたフォルダを送信するだけです。

    ところで、このcurlコマンドには別の問題があります。ファイル名にスペースが含まれているように見えるので、引用符で囲むかエスケープする必要があります。

  • ファイルの名前は「Samanage_Agent_1.1.72_1.1.37_203_30_installer」のようですが、「samanage.zip」という名前のファイルを解凍するコマンドがあります。ダウンロード/送信しているファイルの名前を「samanage.zip」に変更するか、unzipコマンドを編集して実際の名前に一致させます。

  • 別の問題(元のスクリプトにもあります)は、途中で失敗した場合でも盲目的にすべての手順を実行することです。たとえば、この場合、curlコマンドは失敗したため、ファイル名が正しい場合でもにunzipは何もありません。そのため、展開されたファイルを実行しようとしてもうまくいかなかったでしょう...

    エラーから回復できるより洗練されたスクリプトがない限り、通常は続行しようとするよりもスクリプトを終了するのが最善です。これを行うにset -eは、スクリプトの先頭にコマンドを追加するか、の&&代わりにコマンドを結合します;。この&&オプションでは、エラーハンドラーを追加することもできます||

    cd /Users/Shared &&
    curl -k -O https://server.hostingyourfiles.com/samanage.zip &&
    unzip samanage.zip &&
    /Users/Shared/samanage/Samanage_Agent_*.app/Contents/MacOS/installbuilder.sh --mode unattended &&
    rm -rf /Users/Shared/samanage/ ||
    echo "Installation failed on $HOSTNAME"
    
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.