2

我正在使用厨师在 ubuntu 上自动安装石墨。我需要使用 bash 或任何其他方式自动化 python manage.py syncdb。

ubuntu@ip-xxx-xxx-xxx:/opt/graphite/webapp/graphite$ sudo python manage.py syncdb
Creating tables ...
Creating table account_profile
Creating table account_variable
Creating table account_view
Creating table account_window
Creating table account_mygraph
Creating table dashboard_dashboard_owners
Creating table dashboard_dashboard
Creating table events_event
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table auth_message
Creating table django_session
Creating table django_admin_log
Creating table django_content_type
Creating table tagging_tag
Creating table tagging_taggeditem

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (Leave blank to use 'root'): admin
E-mail address: test@gmail.com
Password: 
Password (again): 
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
No fixtures found.

我需要使用以下内容自动执行以下提示

Would you like to create one now? (yes/no): yes
Username (Leave blank to use 'root'): admin
E-mail address: test@gmail.com
Password: test101
Password (again): test101

谢谢

4

5 回答 5

3

由于我遇到了同样的问题并使用 expect 解决了它,我想我可以分享我编写的 expect 脚本:

set timeout -1
set program [ lindex $argv 0 ]
eval spawn $program [ lrange $argv 1 end ]
expect {
    "Would you like to create one now" {
            send "yes\r"
            expect "Username"
            send "admin\r"
            expect "E-mail"
            send "test@gmail.com\r"
            expect "Password"
            send "admin\r"
            expect "Password"
            send "admin\r"
            exp_continue
     } "Migrated" {
            expect eof
     }
}

请记住自定义默认管理员和密码。

于 2013-07-16T15:25:50.677 回答
2

你可以试试期望。除了 sftp 之外,我从未将它与其他任何东西一起使用过,但它应该适用于任何交互式应用程序。

于 2012-04-15T18:56:23.683 回答
1

如果您需要解决“输入”问题并希望使用结构自动创建管理员,请考虑将--noinput标志传递给syncdb加载已创建用户数据的固定装置。

看看这里:django fabric syncdb

于 2012-10-11T16:15:01.500 回答
0

会简单地将数据作为标准输入传输到流程工作吗?

printf "%s\n" yes admin test@example.com test101 test101 | sudo python ...

或者

sudo sh -c 'printf "%s\n" yes admin test@example.com test101 test101 | python ...'
于 2012-04-15T21:30:59.297 回答
0

我刚找到这个,但我想说no而不是yes。所以这是一个基于 unicoletti 示例的最小期望脚本。

set timeout -1                                                                                                                                                          
spawn "./your_django_script.sh"                                                                                                                                     
expect {                                                                                                                                                                
    "Would you like to create one now" {                                                                                                                                
            send "no\r"                                                                                                                                                 
            exp_continue                                                                                                                                                
     }                                                                                                                                                                  
}   
于 2015-03-06T20:12:03.413 回答