টার্মিনালে dscl সহ অ্যাকাউন্টের ছবি / জেপিইজিফোটো সেট করা


1

আমি এই প্রশ্নের উপর ভিত্তি করে একটি স্ক্রিপ্টে কাজ করছি: পর্বত সিংহের কমান্ড লাইন থেকে নতুন ব্যবহারকারী তৈরি করতে কোন পদক্ষেপের প্রয়োজন?

স্ক্রিপ্টটি একটি পোস্টফ্লাইট স্ক্রিপ্ট হিসাবে একটি খালি ইনস্টলারে প্যাকেজ করা হয়েছে।

এটি সব ঠিকঠাক কাজ করছে - তবে আমি অ্যাকাউন্টের চিত্র সেটটি পাই না। চিত্রের সম্পত্তিটি কোনও চিত্রের ফাইলে সেট করতে আমি dscl ব্যবহার করতে পারি, উদাহরণস্বরূপ ডিফল্ট অ্যাপল অ্যাকাউন্টের ফটোগুলি।

আমি প্যাকেজে অন্তর্ভুক্ত থাকা কোনও ফটো / ব্যবহারকারী / নতুন অ্যাকাউন্ট / পাবলিক সহ বেশ কয়েকটি ডিরেক্টরিতে অনুলিপি করতে পারি। তবে অনুমতিগুলি বিশৃঙ্খলাবদ্ধ এবং নতুন অ্যাকাউন্ট ব্যতীত অন্য কেউ প্রোফাইল চিত্রটি দেখতে পারে না। আমি ফাইলটি chmod করতে অক্ষম। পরিবর্তে, আমাকে জিইউআই ব্যবহার করতে হবে এবং "তথ্য পাবেন -> অনুমতিগুলি সেট করুন"

অন্য বিকল্পটি আমি দেখতে পাচ্ছি যদি আমি জেপিইজি ফোটো মান সেট করে। আপনি যখন কোনও কাস্টম ফটো ব্যবহার করেন বা ফটোবূথ-এ নিয়ে যান এটিই ঘটে। তবে আমি নিশ্চিত নই যে আমি ইনস্টলারে অন্তর্ভুক্ত ফটোটি কীভাবে হেক্স বা जेপিইজিফোটো মানতে সংরক্ষণ করা হচ্ছে তাতে রূপান্তর করব।

ধন্যবাদ! - ক্রিস

সম্পাদনা: স্ক্রিপ্ট যুক্ত হয়েছে। এই স্ক্রিপ্টে সবকিছুই কাজ করে - অনুমতিগুলির কারণে ছবিটি কেবল প্রদর্শিত হবে না। পথটি ঠিকঠাক করা হয়েছে। আমি এটি বেশ কয়েকটি পৃথক স্থানে ভাগ করে নেওয়ার চেষ্টা করেছি যেগুলি অ্যাক্সেস ভাগ করে নিয়েছে, তবে অনুমতিগুলি কী ভুল তা বিবেচনা করেই আমি সেগুলি chmod করতে পারি না।

###CREATE TP ADMINISTRATOR ACCOUNT###

LastID=`dscl . -list /Users UniqueID | awk '{print $2}' | sort -n | tail -1`

NextID=$((LastID + 1))
. /etc/rc.common
dscl . create /Users/administrator

dscl . create /Users/administrator RealName "Administrator Account"
dscl . create /Users/administrator hint "the password Duh"

dscl . passwd /Users/administrator password
dscl . create /Users/administrator UniqueID $NextID
dscl . create /Users/administrator PrimaryGroupID 80
dscl . create /Users/administrator UserShell /bin/bash
dscl . create /Users/administrator NFSHomeDirectory /Users/administrator
cp -R /System/Library/User\ Template/English.lproj /Users/administrator
chown -R administrator:staff /Users/administrator

cp $1"/Contents/Resources/admin.jpg" /Users/administrator/Public
dscl . create /Users/administrator Picture "/Users/administrator/Public/admin.jpg"

###CREATE TP ADMINISTRATOR ACCOUNT###

ক্রিস, আপনি বর্তমানে আমাদের যে স্ক্রিপ্টটি প্রদর্শন করতে পারেন? অ্যাপল ডিফল্ট যেকোন একটিতে 'চিত্র' মান সেট করা ভাল কাজ করা উচিত।
টনি উইলিয়ামস

এছাড়াও, আপনি বুঝতে পেরেছেন যে আপনি এখানে লগইন আইকনটি সেট করছেন? ওহ, এবং আপনি কি পথের জায়গাগুলি সম্পর্কে সাবধানতা অবলম্বন করছেন?
টনি উইলিয়ামস

হাই টনি, যেমনটি আমি বলেছিলাম আমি এটি অ্যাপলের ডিফল্ট ছবিতে সেট করতে সক্ষম am এবং পথটি সঠিক, তবে আমি ফাইলটি সরানোর সময় আমি অনুমতিগুলি শেষ করি যা কেবল রুটটিকে চিত্রটি দেখার অনুমতি দেয়। আমি ফাইলটি chmod করতে অক্ষম।
ডাকাইন 83

হ্যাঁ, আমি জানি এটি কেবল ছবি এবং এটি গুরুত্বপূর্ণ নয়। এটি প্রয়োজনের চেয়ে হতাশার চেয়ে বেশি ছিল। অনুমতিগুলি সঠিকভাবে কাজ করার চেষ্টা করার জন্য আমি এটিকে খুব শীঘ্রই স্ক্রিপ্ট পোস্ট করব।
ডাকিনে 83

উত্তর:


1

dscl

দেখে মনে হয় যে সর্বাধিক প্রতিশ্রুতিবদ্ধ পদ্ধতিটি হ'ল JPEGPhotoব্যবহারকারীর জন্য বৈশিষ্ট্যটি পরিবর্তন করা । সমস্যাটি হ'ল, জেপিইজি চিত্রটি খুব সহজভাবে একটি হেক্স স্ট্রিংয়ে রূপান্তরিত করা যেতে পারে, কমান্ড-লাইনে মানটি খুব দীর্ঘ। এই বৈশিষ্ট্যটি মনে হয় আপনি কোনও ছবিতে টানলে জিইউআই কী লিখবে। সেটটি যখন এই পরিবর্তনশীল থেকে চিত্র পুনরুদ্ধার হিসাবে সহজ হয়:

dscl . read /Users/username JPEGPhoto | xxd -r -p > ./username.jpg

ফোরামে উল্লিখিত দ্বিতীয় সাধারণ উপায় হ'ল:

dscl . delete /Users/username JPEGPhoto
dscl . delete /Users/username Picture
dscl . delete /Users/username Picture "/Library/User Pictures/username.jpg"

এটি কেবলমাত্র 'লগইন' আইকনটিকে পরিবর্তন করে সিস্টেম অগ্রাধিকারে ব্যবহারকারী বিবরণ পৃষ্ঠায় প্রদর্শিত আইকনটি নয়।

Sysadminctl ব্যবহার করে

ব্যবহারকারীরা তৈরি বা পরিচালনা করার সময় ফোরামগুলিতে সাধারণত উল্লিখিত কমান্ডের sysadminctlতালিকার চেয়ে বেশি পছন্দ করেন dsclsysadminctlব্যবহারকারীকে একটি নিরাপদ টোকেন সহ সঠিকভাবে সেট আপ করে যা আপনি FileVaultব্যবহারকারীকে ব্যবহার করতে চাইলে ডিস্কটি বুট করার সময় ডিস্ক আনলক করতে সক্ষম হওয়া উচিত এটি গুরুত্বপূর্ণ । এটি তৈরি করার সময় ব্যবহারকারীর চিত্র সেট করার ক্ষমতাও সরবরাহ করে। দুর্ভাগ্যক্রমে এটি ব্যবহারকারীর চিত্র পরিবর্তন করার ক্ষমতা সরবরাহ করে না।

ডিএসিমপোর্ট ব্যবহার করা হচ্ছে

ব্যবহারকারীর চিত্র পরিবর্তন করার জন্য কী কাজ করে তা হ'ল dsimport

স্ক্রিপ্ট ব্যবহারটি হ'ল:

./change_userpic.sh USERNAME /path/to/image/jpg

জিআইএসটি

#!/bin/bash

declare -xr AWK_CMD="/usr/bin/awk"
declare -xr SW_VERS_CMD="/usr/bin/sw_vers"
declare -xr DSIMPORT_CMD="/usr/bin/dsimport"
declare -xr ID_CMD="/usr/bin/id"

USERNAME="$1"; export USERNAME
USERPIC="$2"; export USERPIC

OSVERSION=$(${SW_VERS_CMD} -productVersion | ${AWK_CMD} -F"." '{print $2;exit}'); export OSVERSION
# Add the LDAP picture to the user record if dsimport is avaiable 10.6+
if [ -f "${USERPIC}" ] ; then
    # On 10.6 and higher this works
    if [ "${OSVERSION}" -ge "6" ] ; then
        declare -x MAPPINGS='0x0A 0x5C 0x3A 0x2C'
        declare -x ATTRS='dsRecTypeStandard:Users 2 dsAttrTypeStandard:RecordName externalbinary:dsAttrTypeStandard:JPEGPhoto'
        declare -x PICIMPORT="/Library/Caches/${USERNAME}.picture.dsimport"
        printf "%s %s \n%s:%s" "${MAPPINGS}" "${ATTRS}" "${USERNAME}" "${USERPIC}" >"${PICIMPORT}"
        # Check to see if the username is correct and import picture
        if ${ID_CMD} "${USERNAME}" &>/dev/null ; then
            # No credentials passed as we are running as root
            ${DSIMPORT_CMD} "${PICIMPORT}" /Local/Default M &&
                echo "Successfully imported users picture."
        fi
    fi
fi
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.