| #!/bin/sh |
| # |
| # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| # |
| # Copies all logs, screen-shots, crash dumps to Downloads folder. |
| # Help information about script usage. |
| |
| . /usr/lib/shflags |
| |
| DEFINE_boolean delete $FLAGS_FALSE \ |
| "To collect data and clear up folders" |
| DEFINE_boolean screenshots $FLAGS_FALSE \ |
| "To also collect saved screenshots" |
| FLAGS_HELP="USAGE: To collect logs and crash dumps: sh $0 [flags] \ |
| \nCollected data is zipped to tar.bz2 file with timestamp in Downloads \ |
| folder." |
| |
| # Parse command line |
| FLAGS "$@" || exit 1 |
| eval set -- "${FLAGS_ARGV}" |
| |
| echo "Collecting logs for user" |
| home_dir=/home/chronos |
| |
| # Creating folder to copy logs, screenshots and dumps. |
| if [ -z "$(ls -A /home/chronos/user)" ]; then |
| log_dir=${home_dir}/diagnostic_logs |
| tar_path=${home_dir} |
| else |
| log_dir=${home_dir}/user/Downloads/diagnostic_logs |
| tar_path=${home_dir}/user/Downloads |
| fi |
| mkdir -p ${log_dir} |
| sudo rm -rf ${log_dir}/* |
| echo "Created log folder in Downloads" |
| |
| # Copying file with current timestamp and date. |
| date > ${log_dir}/timestamp.txt |
| echo "Copied current timestamp" |
| |
| # Copying lsb-release file. |
| sudo cp /etc/lsb-release ${log_dir}/lsb_release.txt && \ |
| echo "Copied lsb-release file with version information" |
| |
| # Copying Consent To Send Stats file for client id. |
| sudo cp "${home_dir}/Consent To Send Stats" \ |
| ${log_dir}/consent_to_send_stats.txt && \ |
| echo "Copied Consent To Send Stats file with client id" |
| |
| mkdir -p ${log_dir}/system_level_logs ${log_dir}/user_level_logs \ |
| ${log_dir}/crashdumps |
| # Copying all logs under /var/log/. |
| sudo cp -r /var/log/* ${log_dir}/system_level_logs && \ |
| echo "Copied all system level logs from /var/log/" |
| sudo cp -r ${home_dir}/user/log/* ${log_dir}/user_level_logs && \ |
| echo "Copied relevant user level logs" |
| |
| # Handling the change in chrome log file name in different builds. |
| if [ -d /var/log/chrome_old_logs ]; then |
| chrome_log_path=chrome_log_* |
| else |
| chrome_log_path=chrome_* |
| fi |
| # Copying chrome logs. |
| sudo cp -r ${home_dir}/${chrome_log_path} ${log_dir}/system_level_logs && \ |
| echo "Copied system level chrome logs" |
| sudo cp -r ${home_dir}/user/${chrome_log_path} ${log_dir}/user_level_logs && \ |
| echo "Copied user level chrome logs" |
| |
| # Adding extension .txt to all copied log files. |
| log_array="${log_dir}/system_level_logs/* ${log_dir}/user_level_logs/*" |
| for log_file in ${log_array}; do sudo mv "${log_file}" "${log_file}.txt"; done |
| |
| # Copying crash dumps. |
| sudo cp -rf "${home_dir}/user/.config/google-chrome/Crash Reports/" \ |
| ${log_dir}/crashdumps/ |
| crash_array="\ |
| /var/spool/crash/* \ |
| ${home_dir}/user/crash/* " |
| sudo cp -rf ${crash_array} ${log_dir}/crashdumps/ && echo "Copied crash dumps" |
| |
| # Copying screen-shots if flag --screenshots is specified. |
| if [ ${FLAGS_screenshots} -eq ${FLAGS_TRUE} ]; then |
| cp -rf ${home_dir}/user/Downloads/Screenshots ${log_dir}/screenshots && \ |
| echo "Copied screen-shots" |
| fi |
| |
| # Compressing the log folder with all collected files. |
| currentdate=$(date +%m%d%y-%H%M%S) |
| sudo tar cjfP ${tar_path}/log-${currentdate}.tar.bz2 ${log_dir}/ |
| sudo rm -rf ${log_dir}/ |
| echo "Log files zipped to folder under ${tar_path}: log-${currentdate}.tar.bz2" |
| |
| # Deleting logs, dumps, screenshots from original location with flag --delete. |
| if [ ${FLAGS_delete} -eq ${FLAGS_TRUE} ]; then |
| echo "Deleting all logs" |
| sudo rm -rf /var/log/* ${home_dir}/${chrome_log_path} |
| sudo rm -rf ${home_dir}/user/log/* ${home_dir}/user/${chrome_log_path} |
| |
| echo "Deleting crash dumps" |
| sudo rm -rf "${home_dir}/user/.config/google-chrome/Crash Reports/" |
| sudo rm -rf ${crash_array} |
| |
| # Deleting screenshots with both --delete and --screenshots flags. |
| if [ ${FLAGS_screenshots} -eq ${FLAGS_TRUE} ]; then |
| echo "Deleting screen-shots" |
| sudo rm -rf ${home_dir}/user/Downloads/Screenshots/* |
| fi |
| |
| # Reboot after deleting all files. |
| echo "Rebooting system after clean up in 1 minute" |
| sudo shutdown -r 1 |
| else |
| echo "Logs and dumps are copied but not deleted." |
| echo "To clear all logs, run the script with --delete flag." |
| echo "For all flag options, run the script with --help or -h flag." |
| fi |